When creating a transaction the Bitcoin-Qt client will determine the properties of a transaction and if the transaction is likely to need feeds the client will insist that a fee be added. The rate is 0.0005 BTC per 1K of data consumed by the transaction. If the transaction size is below 10K though and meets other criteria no fee is required:
Other clients may not have any requirement when sending. For instance, the Blockchain.info/wallet allows "Custom" send in which the fee is entered by the sender. Zero is a valid fee amount.
It really doesn't matter what the client or the user chooses, what matters are the level of fees the miner's require. If few miners will accept a transaction because the fee is too low, the transaction will simply just take longer to confirm, eventually.
So there is a competitive market for transactions. A miner can try to boycott transactions in which the fee is too low however the next miner might be willing to include the transaction and in that instance the boycotting miner is simply passing up the opportunity to earn the fees from that transaction.
So the market consisting of miners looking for revenues from transaction fees guide the rate that is required for a transaction to get mined in a timely manner.
It is likely the amount for the recommended fee in the Bitcoin-Qt client will be decreased at some point if 0.0005 BTC ends up becoming expensive (currently less than three U.S. cents).