Why would Bitcoin-QT attempt to charge a processing fee, when I have my transaction fees set to zero? I'm attempting a test transaction of an amount less than 0.0015 BTC with my transaction fee set to 0 BTC, yet I'm getting this message: 


  The total exceeds your balance when the 0.0015 BTC transaction fee is
  included.


The transaction fee should be free, right? Why would this happen?
Bitcoin-Qt enforces the reference implementation:

A transaction will be sent without fees if these conditions are met


It is smaller than 10 thousand bytes.
All outputs are 0.01 BTC or larger.
Its priority is large enough


Otherwise, the reference implementation will round up the transaction size to the nearest thousand bytes and then add a fee of 0.0005 BTC per thousand bytes. Users may override the default 0.0005 BTC/kb fee setting, but cannot control transaction fees for each transaction. Bitcoin-Qt does prompt the user to accept the fee before the transaction is sent (they may cancel the transaction if they are not willing to pay the fee).   

Source