Those that want to get money with the free work of others, should give something back and most authors do offer commercial licenses when asked for.
With licenses like BSD, the living proof is that most companies are leechers.
Have you ever considered the fact that it's not all about money and proprietary software? This affect Open Source software as well. If I want to allow other to do as they will with my code, I won't touch a library with such a viral license because I don't want to subject myself or my users with having to even think about it. Also, have you considered...
> With licenses like BSD, the living proof is that most companies are leechers.
That's not a proof of anything... The same license you cite is a living proof that most companies and regular people will contribute even more than they have to without you having to force them to do anything.
 most, for some definition of most, because if a company of individual have neither the expertise nor the resources to contribute, then what good does restricting their use of the code achieve? (rhetorical question)
When I started coding, there was no such thing as GNU or open source movement. You got commercial software, shareware, beerware, donationware, whateverware.
I don't have any problem with commercial software, actually I do use quite a lot of it.
What I have problems with, and I have seen it happening a lot, is companies using source code from someone else as a means to cut costs for their binary blobs, without any form of contribution.
So I always defend a dual license scheme. GPL for open source projects, and some company whats to use the code in a commercial product, just needs to ask for the commercial license.
The only freedom GPL takes away, is the freedom to abuse the work of others.