An online wallets that sends transaction change back to the original address
If you don't want the client to generate any private keys for you, it seems what you need is a javascript client that builds and propogates transactions.

http://brainwallet.org/#tx

This is a hosted javascript client (everything happens on the client side so there is no security concerns) allows you to provide a private key and build a transaction that way.