Count me in on the git crowd. Having tried most of the distributed source control systems out there (hg, mtn, darcs, arch), I have to say git is my favourite. I've been using it daily for about 3 months now.
While, as a devout Ocamlist, I don't much like Python, Git's code is indeed a Torvalds-style mess with an unholy mixture of C, shell scripts and even bits of Perl. Now it certainly has innovative concepts but writing a complex app like this in C is not a good idea. A HLL would have been safer, and for performance-critical parts, you can still use C, as in Mercurial. Actually, Mercurial's code is rather clean, a bunch of Python files, plus two C stubs. Also, Git doesn't, understandably, work well under Windows. I would consider this an advantage but my bosses insist on shipping Windows software for some strange reason.
TortoiseSVN just sucks. I'd rather use the command line. Actually, I do...
For the times you just have to use a GIU, try SynchroSVN. It isn't free, but worth the price IMO.
The client built into IntelliJ is nice if you grok Java. They also have a Local History that lets you track every minor change, not just changes between commits.
From a "control" perspective Perforce gets a lot of things right. It's fast, efficient and easy to maintain. It's also a big hit with nosy managers since they can easily limit what any developer can see and also tell exactly what each developer has checked out. Keeping all the metadata at the server has it's advantages.
I believe Perforce's customers include both Google and Microsoft. They must be doing something right.
That said, I think more and more people need to deal with multiple projects at once where there isn't a single central policy. Distributed VCS systems really shine as "control" becomes less important.