I'll bite :-)
I used csv and subversion back in the day, switched to hg, and now switched to git. I manage a smallish project with 5 or so contributors and contribute to some other projects.
Git/hg vs csv/svn is all about distributed vs centralized. With git/hg, you learn to love branching and merging, and commit as often as needed.
Git vs hg is more subtle, but I am strongly in the git camp now.
In my perception, hg et al are about lines of code. You contribute code and the code is checked in. git is all about commits. Your work is in commits, and commits can be rebased, squashed, amended, etc until they are just right to express your contribution. Git is not so much about communicating with yourself about how you got to your code; git is about communicating to the rest of the team what you are contributing. In a sense, you are not (just) writing code, you are writing a commit history.
That said, what I miss in git is the "version history" of commits. I would like to see some sort of "is-based-on" link between the 'final' commit and the commits it is amended, rebased, and/or squashed from. I would love to be able to 'expand' a final commit to see the history that went into it, because now you are sometimes choosing between commit elegance and keeping track of development history (aka in the choice to amend a silly type you choose elegance; in the choice to -no-ff merge a branch you choose history).