I'm not making tons of money (or even regular money) from open-source, but I've made a small amount of income by basically offering consulting and custom development around my open source projects. I have heard of other projects that do this very successfully. Basically it works like this:
- client: I like your software, but for us to use it we need it to have $FEATURE
- me: I can add $FEATURE, but it will take N hours of development time. Would you be willing to fund the development of this feature at $X/hr?
If they say yes, they (and everyone else) get the feature for a nominal investment. If they say no, they can either contribute the feature themselves, or hope and pray that someone else funds it.
I've also been paid just to help set up and configure some of my software for specific purposes.
The bottom line is: the code is free, but my time is not. You're paying directly for my services, not the code.