Having potential and having support are two different things, and you tend to need both to get anywhere. Especially the mainstream.
Linux might be free and open-source, and highly flexible, but its also painfully difficult to get into. It lacks the support Windows has (which is the main reason everyone uses it to begin with) and while Open-source is cute and all, most open-source software isn't built to deliver depth, its made to get the job done, remain small and simple so the userbase can add what they want. Not to come out of the box usable and optimized, ready for whatever you can throw at it.
Most people would much rather not be bothered, and developers see this.
Think of it this way, food stamps are great and all, it keeps you alive and if your clever you can use them to make some great food for pretty damn cheap and large amounts of it too. But you also know you would much rather have a few hundred bucks extra so you can go out once in a while, or at least buy hot food.