In your specific example, an object-to-object collaborative filter will return a ranked list of "stuff you should like" provided you can give it one or more examples of something the user likes, *or* a tagged set of attributes associated with those products that the user really does require (e.g., "I only like red and fruity.")
From there, I think Ariely's work is very much on point: provide three items side-by-side to choose from, one of which is a relatively poor match to provide contrast (in this case, probably a higher-priced item), then you set the remaining two up to structure the choice such that it's an easy comparison on a single attribute ($5 price difference, from two different regions, etc.) To my knowledge, the bulk of the research shows that consumers are more likely to make a choice if you reduce the number of apparent items as well as the number of perceived vectors they're comparing on (I believe Ariely's related example used vacation packages) so, e.g., the consumer is really just choosing whether they want a $20 Italian red and fruity wine or a $25 Argentinean red and fruity wine, because the $40 Shiraz Reserve is (purposely) too expensive. Alternatively, you might increase average purchase if your contrast item is priced lower rather than higher.
I've built somewhat similar applications at Match.com, Selloscope, and DigiWorksCorp and had a high degree of success, so if the machine learning approach isn't giving you a usable consideration set, it might be worth considering alternative methodologies.