Checkpoints are not always centralized. Nxt uses a system where each client sets his own rolling checkpoint 720 blocks in the past.
isn't NXT block generation
time about one in a minute? Then if something went wrong
and 12 hours went by with two or more competing chains,
you'd have a set of hard-coded forks. Or is there some
additional mechanism to prevent that?