Why not have the checkout page redirect when needed (with a message of course)? If you click "proceed to checkout" you expect to end up in checkout.