Software is relatively expensive to produce. It takes lots of time by skilled workers to produce. Open source looks cheap because it is being done by volunteers. Or by companies where the cost is hidden.
There was a recent email on the Linux kernel mailing list about the cost to reproduce Linux 2.6 from scratch. It used a standard model. With over 4 million lines,takes over 1300 person-years of effort. To finish in 8 years requires over 150 developers, for $175 million in salaries.
It bet if you added up the research and development expenses of open source companies, you would end up with a significant chunk of change.