I have an interest in amateur telescope making (ATM), and it interests me to note that the very same process that most people seem to be using to lap their CPUs is the process by which ATMers make parabolic mirrors from flat glass.
Unfortunately, rubbing a CPU backwards and forwards on sandpaper is ALWAYS going to have some “crowning” effect. The effect is almost impossible to eliminate, and such techniques I have seen as “use a figure 8 motion” actually add to the effect.
It is widely held in the ATM community that it is far more difficult to make a perfect flat, than to make a pretty good spherical or parabolic surface, and these guys have extreme patience: grind for a couple of minutes, measure, grind for a couple of minutes, measure, etc etc.
Some techniques such as lining the CPU with a marker kind of limit the process a little, but if you draw a star across your heatsink or CPU, you’ll notice that whatever kind of action you use, the middle don’t get worn away as quick as the edges.
One way that lapping could be improved is not to aim for a perfect flat, since this is not going to happen, but to aim for very good mating surfaces between CPU and heatsink.
The way one can achieve this is to put valve grinding paste or similar compound between CPU and heatsink. Grind them on each other, in small circular and backwards forwards patterns, alternating between the two.
This will have the effect of making the piece on the bottom convex and the piece on the top concave, but at least they match, and if this effect is severe, the CPU and heatsink can be swapped, so that the other is on top for a grinding time equal to the time taken so far.
Automotive feeler gauges offer a good way of telling how bad any matches are. If one laps a CPU “flat” with sandpaper on glass, and a heatsink the same way, odds are that when you put the two together, you’ll be able to fit at least the thinnest leaf of the feeler gauge under the corner of the CPU when you press them together hard in the center.