First of all $99.99 looks more expensive than $100. 9 is the highest number in our ten digit system while 1 and 0 are the lowest. Therefore, at a quick glance, four 9s look much more intimidating than a 1 and two 0s.
Also, using 9s and a decimal point adds confusion to an otherwise simple situation. Add $9 + $8 and anyone quickly knows the total is $17. But try to add $8.99 and $7.99 without a calculator, and you are destined for errors! It is bad business to confuse customers, but it is also dangerous to use numbers that only make book keeping more difficult.
The only excuse for using $.99 is the assumption that customers are stupid. But I find it hard to believe that anyone really thinks $.99 is significantly less expensive that $1. And any merchant that bases pricing strategies on the assumption that his clients are idiots is not a merchant anyone should trust.