In my opinion, the biggest problem with Linux is it requires tinkering in terminal which nearly every non-tech savvy person finds intimidating. Even if it's a simple command. Until Linux has a shiny dumbed-down GUI for everything you need to do, it won't catch on for the average PC user.
Linux has made incredible progress in this area though. But, everytime I use a new Linux install, I encounter errors or something that requires troubleshooting and terminal use.