I think one of the biggest issues is training and support.
People have been using windows for years and most who want to try linux are happy to do so. Problems arise when something breaks up and you and nobody else has no idea how to fix it (aside from some linux guru you might know who is already pissed off at dealing with so many linux issues that people have). You simply don't know what to do that well. Sure you can google but it just gets more and more frustrating since you are not actually solving the problems, more like applying solutions blindly.
This gets reflected when you suggest / do a install for an average user, if something breaks up they turn to you.
Do you really want to say that you have no idea what they should do or suggest them to do stuff inside terminal just to get their stuff working?
This is one of the reasons I don't even want to suggest macs. While I have used them and I know that the average user might be "better off" using them but I kinda feel responsibility after turning people for their purchase. If they need help, they are ducked. Unless they know some "mac-expert".
Back to Linux..
I've had so many instances where people wonder why they can't open file format X properly or save as "proprietary & more supported/familiar" file format Y. Sure you can do many hacks to get things to working but at the end of the day you realize that they are so much better off just using windows where
they can just buy an, say, webcam or a printer and not worry about the fact that will it work on their system or not.
Ugly truth is that windows supports almost everything on the PC market out there, even the average users can pop the DVD in and install the software, unlike where in linux you might need to start poking at some stuff since the support might exist but you have a rev B instead of rev A and won't work out of the box like that (just an example).
Linux does a lot of thigs, but some of those things are half-done. You might have 10 different ways to perform a task (different programs) but in the end you actually just want one that works. This is what Apple has kinda been doing as well. Everytime you start windows you can be sure that the programs are the same or just evolved versions of their former versions where with Linux distros they might change the distributed application between versions and you suddenly need to learn a totally new program.
Don't get me wrong, I would love to see Linux on the desktops someday but at the moment it's just too much of an hassle and is more like a hipster-OS when it comes to desktop computing.. Yes, I just said that. I currently do use debian on my server and loving it, I haven't really been using the GUI for a few years aside from occasional quick sessions.