Why is it so hard to just point to the documentation on these hidden fees? It's because it doesn't exist. Or at least Google doesn't know about it, which is the same thing.
Google has this on the first page for "bitcoin transaction fees":
https://en.bitcoin.it/wiki/Transaction_feeThe trouble with that wiki article is that in the third paragraph it states "Transaction fees are
voluntary on the part of the person making the bitcoin transaction..." (emphasis added). This implies that if you set the transaction fee option to 0.00 BTC that there will be no fee incurred.
What is being discussed here is an
involuntary transaction fee that is being automatically added by the client
even with the transaction fee option being set to 0.00 BTC.
What is being asked is: How many confirmations are required to avoid this involuntary transaction fee? The wiki link above is silent on this issue.
It's not an easy question. I'll try to break it down. When creating a transaction, it looks through your wallet and tries to select the coins that come closest to equal to your target value. The coins it selects are evaluated on their size (in BTC) and age. That whole amount is then divided by the total transaction size. A typical transaction is about 250 bytes. (One input transaction, two output transactions). So if your input transaction is worth 1 Bitcoin and has an age of 144 blocks (about a day), then they are allowed for free processing. If it is worth 0.5 Bitcoins, then two days, if .25, then 4 days, etc. If it's not eligible for free processing, the transaction fee is set to 0.01 BTC. If any of your outputs is less than 0.01 BTC, the transaction fee is also set to 0.01 BTC. If you have change due from your transaction that is less than 0.01, it will include it as a fee instead.
So all in all, it depends on the coins you have in your wallet, which ones the algorithm selects, how big those coins are, how many confirmations they have, and the size of your outputs.
Now as far as miners are concerned, they'll accept a 0.0005 fee rather than 0.01 fee for some reason, but they otherwise seem to use the same logic as to which blocks they will accept for free processing. However, if a block is submitted for acceptance, all this fee logic is not checked and it will accept any block so long as the inputs of the transaction are equal to or greater than the output. So if somebody were to program a rogue miner that accepted transactions no matter what, whenever it generated a block, it would be no problem for the network, but the default miners will not accept your transaction unless it has the correct fee attached.
Hope that helps.