A key problem is getting people to pony up. People are all for "the community" and the maintainers doing right by "the community" when that means they (as a member of the community) get the benefit of the code. They are often less vocal about being part of the community then the project maintainers ask for financial assistance, generally assuming that other people will chip in so it'll be OK if they don't.
This isn't just commercial interests: this is private individuals too. Welcome to the idealism of F/OSS rubbing up against less altruistic parts of human nature.
While I'm judging others I'll have to hold my hands up and say that, while I have helped out some projects in the past via both bug-fix contributions and small financial ones, and having opened some of my projects in the dim & distant past, I don't think I can claim to be a net contributor by any wider measure.