when I send money from my wallet, which address shows up as "sender"? I have not yet sent money to anyone. I was wondering if there is any way to control which address shows up in the block chain as the sending address.

Say I receive money on addresses A, B, C.
I want to send money to someone from a totally unrelated address D. How to do this using the bitcoin client. 

EDIT: I want to unlink addresses (A, B, C) from D

So when I send money, the sender should be D, and there should be no transactions from any of (A, B, C) to D, directly or in a chain. I guess this is not possible without 3rd party help.

I fear that the ability to follow transactions in a chain will eventually reveal enough information about identity of users. So there should be a way to send/receive from two complietely unlinked addresses. (linked = connected via a transaction chain).
Bitcoin doesn't really have sender addresses.

Every transaction consumes some of your coins, and creates one or more new coins, potentially assigned to a different address. What the receiver can see is the transaction, and he can trace which coins it spent, and which addresses those coins were previously assigned to. Some programs/sites use the first such address as sender, but this is not recommended. It doesn't say who sent the money - only who previously controlled it (which may for example be a shared webwallet).

The reference client always considers its entire pool of (confirmed) coins as source for creating transactions. The recently (0.7.0) introduced raw transaction API allows fine-grained control over which coins are used as input, but does not have a GUI (yet).