I've tried namecheap 3 separate times and their server always times out when I try to check out. /shrug
1and1 is the cheapest I've found for .com and their private registration is free, but EVERYTHING takes 24 hours through them, so if you plan on actually hosting the site elsewhere, you better allow 2-3 days between purchase and actually getting the DNS changes propagated fully.
I don't buy a ton of domains (3-5 a month) so I'm sticking with buying them all through the hosting company that I plan on putting the site on from now on. The extra $10 a month just isn't worth losing 2-3 days waiting to be able to get a site live and running.