I always thought it was so unscrupulous store assistants were forced to ring a $9.99 product through the till for the 1 cent change, instead of pocketing the note for a $10 item. But here are some more ideas:
According to the book Life's Little Mysteries: Answers to Fascinating Questions About the World Around You, the professor of marketing at Northwestern University's Kellogg School of Management and Duncan Simester, the professor of management science at MIT's Sloan School of Management claim this is because "some retailers do reserve prices that end in 9 for their discounted items. Comparisons of prices at major department stores reveal that this is common, particularly for apparel." They argue that while $9.99 makes a product look more attractive than a straight $10, some chains feel that discount-style pricing is tacky, and beneath the higher-quality products they sell.
One opinion I love comes from Scot Morris' Book of Strange Facts & Useless Information from 1979, which purports that back in 1876, a Chicago newspaper was priced at a penny rather than a nickle was largely to get more pennies into circulation.
I think the more-obvious connection between an item costing $1 and .99 cents is why Apple chose their particular pricing for the bottom-tier of paid-for apps on the App Store. It's crazy, but .99 cents just seems like a more throw-away figure than a dollar.