AWS does not support a 'pre-pay' model, and to my knowledge there's no water-tight way of capping your costs. Yes, you can build an watchdog to nuke all your instances if you go over-budget, but there's still the risk of missing some unexpected source of costs, or misconfiguring your watchdog, or perhaps not getting there in time, etc.
AWS could support pre-pay, but they don't. I think it's a reasonable criticism. There are plenty of horror stories about surprise AWS bills. [0][1]