If you have not seen this yet, here is a diagram by zerohedge.com I found enlightening in order to understand how transactions fit into the Bitcoin concept.
The wiki at bitcoin.it has a more in detail overview of the inner works of Transactions and the inner workings of Raw Transactions.
From what I understand inputs to Bitcoin addresses are always spent completely in a transaction, so whatever you don't assign to a recipient will be available to be collected by a miner as transaction fee. So you'd need to set your client software to use the same address as source as well as for the recipient address of the transaction's change.
You could create a transaction that collects the complete balance from your wallet and sends them to a single output address. However, it is beneficial to use more than one address in order to make it more difficult to connect different transactions as belonging to the same identity. The bitcoin.it wiki has more information on privacy concerns
Additionally, Gavin Andresen, the lead developer of the reference client explained in this question, why change is sent to another address.