To solve this I've put together testnet-in-a-box. It's a zip file you can extract locally, run a couple of commands and you have a difficulty-1, private testnet instance with a few thousand coins for you to spend. You can then use CPU mining to create blocks every 10 minutes as normal or a GPU miner for blocks every few seconds.
Get it here:
http://sourceforge.net/projects/bitcoin/files/Bitcoin/testnet-in-a-box/
The README file contains instructions on how to use it.
Thanks!
Did you see Mike's comment above with regtest?
We have something better now anyway. Grab git master, build it (or wait for the next Bitcoin release) and then run it with the -regtest flag:
./bitcoind -regtest &