So let me see if I got it. The problem is that the value being transferred is too small. Is that it? If I send 10BTC I won' get charged, but if I send 0.01 I will because I am spamming the network. So how is this value calculated? I suppose that when bitcoins are worth $1000 a piece you won't be charging $5 for a $20 transaction...
It's not the size of the transaction in terms of the number of coins exchanged but the size of the transaction in terms of the number of inputs and outputs. Someone with 10,000 bitcoins could spam the network with a transaction that spread those 10,000 bitcoins into 1,000 accounts and then another transaction that gathered them back from 1,000 accounts into one account. They could do this over and over. They'd be "large" in terms of numbers of bitcoins, but still just as spammy.
The issue here is that you have to "gather" all the small transactions into one pile. That's going to mean a fee. It works out to be about a penny for every seven sources you need to gather from with the latest client. This assumes all of your bitcoins have sat still for at least a day.
There are ways you can avoid the fee by breaking the transaction into smaller gathers and letting each transaction sit for a day before gathering it into a bigger one. But this is probably more trouble than it's worth.
I join the chorus of people arguing that it's important to be up front about the transaction fees and document them more clearly so that people know what to expect. Also, there are people running clients who specifically accept all transactions without fees and who specifically connect to miners with the same policy.
Luke Dash Jr. runs such a node. Adding the following to your command line will connect your client to it:
-addnode=173.242.112.53
Your client will try to hide the fact that it originated a transaction, 'dribbling' it out to nodes randomly. So it might take a few hours before it by luck gets to the right node.