I can think of following points for Linux not being popular:
1. Linux is based on Unix platform and as everyone knows that Unix is basically for Server computation, and mainly used by scientific community as it does not have UI support (Except enterprise version like HP Unix). Hence people perception is that it has poor UI.
2. No one bothered to make it popular as majority of it was/is purely volunteered based development
3. Older version of Linux were very difficult to install as well as use as they had poor UI and device support.
4. Nowadays versions of Linux are far better than Windows. I will try to explain with below example: Recently my laptop HDD crashed and it had physical damage too hence I had to get a new second hand HDD as current HDDs are no longer compatible with my old laptop
. Now when I installed Windows XP it asked for drivers for all peripherals, like: Network drivers, Video drivers, etc, the problem was that I kept all drivers on same crashed/damaged HDD so only way was to get via internet but I cannot connect to internet without network driver, catch 22. So I borrowed an Ubuntu CD and installed in empty partition. Ubuntu installation took less time in installation, it never asked for any drivers and I could connect to wireless network instantly. Only installation I have to make is VLC media player, unlike on windows I need to install VLC, Adobe, Java run time env, anti-virus and many more apart from essential drivers. Believe me or not I can open all Microsoft office documents, modify them and also save in formats compatible with Microsoft office all on Ubuntu. I just use Ubuntu for all practical purpose.
5. And finally as Gouresh mentioned it is free so everyone thinks it is not good