Yesterday, Bitcoin Core Developer, Gavin Andresen, announced that the next version of the Bitcoin Core software will have floating transaction fees built in.
As it stands now, the default fee for Bitcoin transactions in Bitcoin Core is .0001 BTC, but you can manually make that fee higher or lower depending on how important the speed vs cost of your transaction is to you. This is because, even though the default fee amount is set by the Bitcoin Core software, miners really dictate how much the fee needs to be since they are the ones ultimately including your transaction in the next block. If you include a higher transaction fee, there is more incentive for miners to include your transaction in the next block they mine. If you include a smaller fee or no fee, then your transaction will take some time before being included in a block.
Currently, miners earn Bitcoin through both block rewards and transaction fees, but as block rewards diminish and eventually cease to exist, miners will become more and more dependent on transaction fees to pay their bills. Block rewards operate on a schedule built into the Bitcoin protocol, as more Bitcoin are freshly mined, the block reward decreases by half until all 21 million Bitcoin are in circulation(See Below). This change essentially creates a built in method for using free market forces for determining optimal transaction fees. Eventually, competition among miners will bring the transaction fees down to as cheap as possible while still maintaining the Bitcoin network. Specifically, this change will allow the user to see how much of a fee they need to include in a transaction to meet their time requirements. If time is not an issue then the user can use a smaller fee or none at all.
Block rewards are currently at 25 BTC/block. As you can see below, block rewards are projected to drop to 12.5 BTC/block by 2016. As block rewards diminish, miners will have to rely more and more on transaction fees as their source of income.