It is a function of: "average" bitcoin fees currently being used/required to get included within a certain number of blocks... and your transaction
data size.... hence people talk of "satoshi's per byte" or "btc per KB" when talking about fee "size".
If your wallet is full of tiny "dust sized" inputs (say, less than 0.001 btc each) from faucet collection or setting minimum payouts from mining pools etc... when you try and send an amount of BTC that is (0.01 or higher), you're going to end up with transactions that require 10+ inputs which results in a data size of over 1500 bytes (in some cases, I've seen users generating 2000-4000 byte transaction sizes).
Now, the current recommended fees are well in excess of 200 sats/byte. So, if you have a 1500 byte transaction (instead of an average 226 byte transaction), you end up having to have a fee of 1500 * 200 = 300,000 sats = 0.003 to send say 0.01 btc!!
now, imagine if you're sending 0.04375 (~$80 today)... and all your inputs are 0.001... you're going to need 44 inputs to make that amount... which would be a transaction that was like 6500 bytes... that would require 6500 * 200 = 1,300,000 sats = 0.013 btc which is around $20...
Moral of the story: DON'T collect dust. If you do, you're going to get slammed on transaction fees... or you're going to have to find a wallet that allows you to set a manual fee (Note: Electrum will import Mycelium seed if you select BIP39 from options during seed restore), and send with a stupid low fee and your transaction will get stuck for days waiting for confirmation. You can then join the legions of people posting "ZOMG Transaction not confirmed for DAYZ!!!!!1!1!" threads...
