The reason many companies choose the software/'solutions' they do is because they have the present and the future to think about.
The IT departments of non-tech companies aren't stocked to the gills with hackers and coders, therefore the deployment of many open-sourced solutions is out of their reach due to the lack of documentation open-source projects put out. Also these projects are managed by individuals in their spare time - with the noteable exception of things like MySQL - so what happens if the project leader gets hit by a bus, there'll be no funding available to rope someone else in to take over and the project will likely stagnate and die.
When things go wrong - and they always do - a decent support contract is worth its weight in gold. No IT manager will take on a system where the buck stops with them (except in cases where they have a department full of coders/hackers). If you can enter into an agreement with the vendor so you have someone to log a 'priority 1' call with who will HAVE to fix the issue - then everything will be okay, and if it isn't, you have someone else to blame.
So - on to the solution;
What we require are companies willing to offer support contracts for open-source software. We either need heavy-weight companies offering this, or a large number of small companies that the customer can chop and change between should they need/want to. There also needs to be greater adoption of open-source projects by commercial companies - providing they keep with the spirit of the game. This adds a hell of a lot of weight to a project and gives 'buyers' confidence that their investment won't be negated by the 'lead developer getting hit by a bus'.
All in all - until we get some proper documentation and support contracts sorted as until we do nobody who values their job will take this stuff and run with it.