I avoid putting it on the heatsink because it can be hard to predict the exact CPU contact area. I find it's better to just put enough extra on the CPU to fill in gaps in the heatsink - which isn't much.
On my latest system (Intel Core i7-860), I followed the instructions included with my Noctua cooler: I put a small bead of the included thermal compound on the middle of the CPU and just made sure to twist the heatsink back and forth slightly before locking it down to spread it that way.
On my previous desktop (AMD Athlon64 X2) I put a little Arctic Silver on the middle of the CPU and pre-spread it to cover the entire CPU before applying the heatsink. I did this because I was worried about it leaking out onto the surrounding capacitors, as Arctic Silver is conductive.
I don't bother lapping/sanding my heatsinks, I'm not sure if it really helps (or that it doesn't hurt).