I think Advertising and Marketing are overrated. There's only so much you can do to push Linux into the market when it's not supported by common software, where APIs change and people can still spend entirely too much time to get too little done.
That's not really the problem though. If you're starting with the fundamental assumption that the users won't know what's best for them, and will just give up everything they've been using so far and switch sides if only your subject is sufficiently polished; that approach can only be unhelpful.
There needs to be an acceptance among the current linux community that there are still flaws with the basic system, a taking of responsibility for actually fixing those flaws. Then fixing the flaws. Currently anyone pointing out a problem gets bombarded with a huge list of patches and long explanations about why it's not really a problem. They're missing the point that users won't really care who is responsible or to spend the time implementing a workaround. At least those users who aren't accused of being subversives working for Microsoft and spreading FUD; that's not doing the movement any favours either.
Linux as a whole would be better off by setting up something like "Kickstarter" for getting bugs fixed. Not a bounty system, because that won't persuade people to invest time, but a system where people are funded to start working on basic system features. So we can have professional programmers investing their time to solidifying the groundwork and porting or replicating windows applications.
I've had some experience running marketing and I can't say it's ever done me that much good. I got far more business by word of mouth and I suspect it works pretty similarly for larger businesses too. When Microsoft pushes out Windows 8, it'll probably have some ads that everyone blocks out; people will buy it because it's the next version of the Windows that they've had experience with before, and they'll buy it because they've had good experiences with Windows in the past.