Is there a way to unfold a mesh? Is there a way to take a mesh, cut it with seams or sharp edges and flatten it, so that the faces stay the same shape and size?

Making paper models is one aspect, where you could use that technique.

No, I'm afraid SZ0Return is not going to do it properly.

And misusing the UV-unwrap is only a last option.



Note, while it's an option to revert to Blender 2.49 which had a script to do this, I'd like a solution that I can use inside the current workspace.
There is an exporter for paper models, it even has a Blender Wiki Page with in depth usage guidelines.  

For more information and plenty of examples of successful use cases you can read the BlenderArtists thread by the developer of the script.

Add seams like you would for any regular texturing job, experiment with simple geometry first. Here is an icosphere.