The RPC and GUI won't let you spend 0-confirmation transactions unless they are 'change' outputs from yourself.
If you REALLY want to shoot yourself in the foot, I've got a pull request for the 0.7 release that adds 'raw transaction' RPC commands that will let you do all sorts of dangerous things, including counting your chickens before they've hatched spending unconfirmed-from-somewhere-else inputs.
Thanks. That works for me, the 20BTC transaction was just an example I could post quickly, I'm really writing a satoshidice bot, and I'd like to keep it's balance very low...
I've never noticed that it didn't allow it before, I use coin control and send to myself fairly often, I'm guessing those transactions are included as "change"