I'm usually heating the heatsink to soften the epoxy/lessen the adhesive forces, and twist it off. Consult the absolute maximum ratings section of the datasheet for the particular CPU, it can safely be heated to its max storage temp. It's usually around 150 deg C for CPU:s in ceramic packages.
Clamp the CPU in a vise with aluminum or copper jaws. Use minimal force, just so it stays clamped. Heat the heatsink with a hot air gun, keeping track of the temperature with an IR thermometer (remember to do the correct emissivity setting in the thermometer, default is almost never matched to metal surfaces). Once you hit target temperature, slowly/carefully twist the heatsink off. Use a thick leather glove.