Transaction fees are calculated according to priority and transaction size.
Priority is a function of age and value of a single input in the wallet. The larger the value and the older the input age the higher the priority will be. Input value and input bytesize are static values. Input age is a variable that increases with time. So, in short, you can decrease your fees by allowing the coins to "age" (aka wait).
priority = (input_value * input_age)/input_bytesize
priority >57600000 is free (not accounting for transaction size)
Transaction size is going to incur fees anytime 5 or more inputs are included in an output. The only way to avoid incurring transaction size fees is to create outputs containing 4 or less inputs. I am not aware of any coin control extensions for the litecoin client so achieving this will likely prove very difficult for very small inputs.
The litecoin client is expected to receive a significant update sometime in May 2013 that may address some of the transaction fee concerns in the current client.