If we store balances before the checkpoint and transactions only after checkpoint it seems to be as safe as the current bitcoin implementation (beacuse balance at the time of the checkpoint won't change even in the case of some forks). The double spents could be easily verified - it only need to check that the sum of transaction inputs less then the balance.
Then you have to implicitly trust the entity making checkpoints. Say you are a new user and you download the latest version of the client and it has a checkpoint for block 200,000 which says I have 100 BTC. Prove that I do or don't legitimately have 100 BTC without any information prior to block 200,000. What a developer owes me a lot of money so I say "you can pay your debt by putting a fake balance into the checkpoint for me". There is no longer Satoshi's goal of commerce without a trusted third party.
Remember the point of the blockchain is to decentralize verification and validation. Any node, running any version of the client produced by anyone given a copy of the genesis block can prove every block and thus every current "balance" is valid.