I love Darcs conceptually and I used it for a few years but after moving to Git I have to say I prefer it. Darcs is certainly cleaner than how Git is actually implemented (scripts and perl everywhere) but Git is nicer to work with day to day. The reason is that in Darcs to make a branch you have to basically check out the tree again. In Git I never need more than my repo directory. All branch checkouts, etc. happen right in that directory. That may sound like a trivial difference but in practice this can save hours a week for the way I work. Git can do most of the cherry picking, etc. that Darcs can do.
I do miss the ability to check in changes that I only ever want to have local though. I haven't found a satisfactory way to do that in Git yet.