To add to kenmazy's reply: another way git allows you to have "checkpoint commits" is to create a new branch. Commit against this branch all you want. Then when you are done with your work, return to the main branch and do a "git merge -squash <yourworkbranch>". git will pull all the commits you did in the feature branch into the main branch's index. You are then free to commit the whole shebang into the main branch as one commit, with whatever commit message you want.
I've never used Mercurial, so I don't know if it has any equivalent to that.