Why can't I spend my bitcoins when they have been fully confirmed? I've used bitcoins for quite a while, but about a year ago I decided to dump having a thin client on my machine, and I've just kept my coins in various exchanges.

Yesterday, however, I wanted to check out the current state of the bitcoin client and I was a bit surprised to see that on Bitcoin.org, you now have three options.  That's good!

I downloaded the Multi-bit and installed it on my Mac.  I generated a payment address and I sent myself about .45 BTC.  After about an hour, I saw that it was confirmed.  I also set my mining pool account to send my payments to this new wallet, so I get a bit-cent sent to it every 12-16 hours (yeah, I'm not getting much, but I enjoy the free money.)

After a day, I now have a few transactions on this wallet.  My confirmed balance is around .5 BTC.  I just sent 2, .02 btc transactions.  Right after sending these two transactions, I tried to send a third for .06, Multi-bit gave me a message stating:


  There are not enough funds in your wallet to send .06 BTC. The
  transaction fee is set at .0001 BTC. Note that you can only spend
  confirmed transactions.


I don't understand.  My confirmed balance is currently around .43 BTC.  These coins have been confirmed for at least 12 hours, yet I'm getting this message telling me my balance was too low?

Has something changed within the Bitcoin protocol in the last year that I'm not aware of or is this a known bug in the Multi-bit client.  My biggest worry is that if and when I decide to move my coins from this wallet to an e-wallet, the thin-client is going to give me this same message when I try to make a big withdrawal because of this bug.  What is going on?
I don't use MultiBit, but just checked its source code to see what the message you quoted means.

It turns out that the message is shown when the amount you're asking to send plus fees is less than the "available balance", which is defined as:


  Balance that can be safely used to create new spends. This is all confirmed unspent outputs minus the ones spent by pending transactions, but not including the outputs of those pending transactions.


The source code also says:


  Consider a real-world example: you buy a snack costing $5 but you only have a $10 bill. At the start you have $10 viewed from every possible angle. After you order the snack you hand over your $10 bill. From the perspective of your wallet you have zero dollars (AVAILABLE). But you know in a few seconds the shopkeeper will give you back $5 change so most people in practice would say they have $5 (ESTIMATED).


So my guess would be that your balance includes some unconfirmed change from your previous transaction(s), and that simply waiting for that change to confirm will solve your problem.

In other words MultiBit doesn't allow you to spend the $5 change until you have it back from the shopkeeper.  Note that the Satoshi client does allow you to spend unconfirmed change outputs.