Personally I use github for projects I want to link to on my resume and bitbucket for websites and stuff I don't want to share with the world (yet). Maybe it's because I'm a novice user who only does the basic commands, but I see no real difference between git and mercurial.
I use TFS in my professional job and am pretty surprised that so many people like it. Everyone I work with either hates it or lives with it. Doing stuff like moving changes from one branch to another is unreasonably hard.
Scott Chacon (author of Pro Git, Git evangelist for Github) has said in his Changelog interview that Git and Mercurial are in fact extremely similar. He wrote some kind of tool for letting the two work together, so he had to learn the internals of both to do so. His take was, use either one. Just make sure you use distributed version control.
I work with TFS (migrating to it and some things on it already) and I hate working with it.
Every single thing it does is a little bit worse then the tools its replacing in my case.
The out of the box diff sucks, its slow, buggy, get latest dosn't, commits sometimes just fail to commit, the CI builds fail for random reasons, the ticketing system only lets you remove time from tasks (not track them).
Its stupid you have to use Visual Studio, Shell Extensions AND command line just to make it work correctly.
Anyone considering moving to TFS better seriously consider their needs before doing it. If you are purely a MS shop, are prepared to spend days fighting the tool, or are happy to go with the defaults, and have big beefy servers sitting around doing nothing then consider TFS.
Otherwise go SVN Jira Fisheye and Crucible. Trust me it will be better and cheaper.
I use TFS in my professional job and am pretty surprised that so many people like it. Everyone I work with either hates it or lives with it. Doing stuff like moving changes from one branch to another is unreasonably hard.