Izhaki's answer pretty much covers everything related to the UX and psychology behind the x.99 pricing. But there's more -- the x.99 pricing is the key to a killer marketing strategy -- figures for discounts and offers are cleverly crafted numbers, which are almost always impossible to reach without buying one extra item. Why? Because discounts are offered on figures such that products total to prices always just a few cents shy of reaching the nearest amount for which a discount may be applicable!
Here's a real life example:
Products for which the above offer was applicable were all priced at 99.90, 199.95, 499.99, 999 etc. Even if the customer were to buy 20 items averaging 99.99 each, he'd only reach 1999.80, which isn't enough to get him the offer! And wallah! This necessitates the purchase of that one extra item (of whatever minimum cost possible), to make that discount figure!
Furthermore, even if the discount were applicable on a non-multiple of 10 figure, like:
the only way to attain this in a single shot would be a purchase an item priced at 999, 999.95, 999.99 etc. But of course, the sales team already knows this. And the nearest priced item one might find may be something like 995.95! You do the math! :)
As a side-note, if you consider products were to be priced at round numbers, such as 10 or 20, then to make the above strategy work, discounts would need to be targeted at figures like 1001, which would make the trick obvious! ;)
UPDATE (21-Nov-2019):
Here's evidence of a ₹500 off on ₹1000
discount coupon for a store where the prices all end ₹1
short, such as ₹499
and ₹999
. The least valued item at the store was at ₹299
, necessitating its purchase to avail the coupon, thereby diminishing the effective discount.
Coupon:

Example products on sale:
