bitcoind has this feature in the sendfrom call.
You're mixing up accounts and addresses.
You can use sendfrom to send from a particular account, but that doesn't change which adress(es) the payment comes from. The concept of 'accounts' is purely accounting within your local client and doesn't affect the generated transactions at all.
If you want to send from a specific address rather than an account, you can combine it with setaccount.
$ bitcoind setaccount 1BitcoinAddress temporary_account
$ bitcoind sendfrom temporary_account 1DestinationAddress 1
$ bitcoind setaccount 1BitcoinAddress old_account
Cumbersome, I know, but such is life with bitcoind.