We are moving from TFS to Subversion. A colleague remarked that he will be very disappointed if he loses the ability to do shelving. In TFS, it is possible to create a set of files to be preserved under a single name. The files are saved in the repository, but not in HEAD or any branch. The changes are just archived and tagged.
This is similar to tagging a set of changes in Subversion, but does not require changes to be checked in. Shelving is useful for code reviews, for making checkpoints of stable versions of changes (not yet checked in) and for just keeping changes safe on the repository even if they are not yet ready to be checked in.
It seems to me that to do this in Subversion requires branching the code in the repository and checking one's code into that branch. That's a lot of bother if one is somewhat likely to discard the changes.
Subversion has a feature that is similar in concept to shelvesets. Its called Patching. See this article for a comparision of a TFS shelveset and a SVN patch: