Kerri Smith has a good overview of the topic in
"Brain decoding: Reading minds" at Nature. The range of investigation goes from identifying the content of dreams to verifying whether someone is lying, to trying to understand the full process of how the brain can encode information. But the starting point is fairly modest - trying to identify what object someone is looking at based on patterns in the visual area of the brain. There's a good reason to start there:
Applying their techniques beyond the encoding of pictures and movies will require a vast leap in complexity. "I don't do vision because it's the most interesting part of the brain," says Gallant. "I do it because it's the easiest part of the brain. It's the part of the brain I have a hope of solving before I'm dead." But in theory, he says, "you can do basically anything with this."
But of course theory and practice are two different things, and there may be practical limits:
Devising a decoding model that can generalize across brains, and even for the same brain across time, is a complex problem. Decoders are generally built on individual brains, unless they're computing something relatively simple such as a binary choice — whether someone was looking at picture A or B. But several groups are now working on building one-size-fits-all models. "Everyone's brain is a little bit different," says Haxby, who is leading one such effort. At the moment, he says, "you just can't line up these patterns of activity well enough."
Using this kind of research to detect 'secret' product preferences seems pretty misguided to me. But that doesn't stop some from trying!