Most transactions can be processed without fees, but users are encouraged to pay a small voluntary fee for faster confirmation of their transactions and to remunerate miners. When fees are required, they generally don't exceed a few pennies in value. Your Bitcoin client will usually try to estimate an appropriate fee when required, or you can use a fee predictor.
Transaction fees are used as a protection against users sending transactions to overload the network. The precise manner in which fees work is still being developed and will change over time. Because the fee is not related to the amount of bitcoins being sent, it may seem extremely low (0.0005 BTC for a 1,000 BTC transfer) or unfairly high (0.004 BTC for a 0.02 BTC payment). The fee is defined by attributes such as data in transaction and transaction recurrence. For example, if you are receiving a large number of tiny amounts, then fees for sending will be higher. Such payments are comparable to paying a restaurant bill using only pennies. Spending small fractions of your bitcoins rapidly may also require a fee. If your activity follows the pattern of conventional transactions, the fees should remain very low.