You could choose to only grant GPL licenses directly to non-profits. They would be free to pass along the same rights to commercial entities, if they chose. It's possible that in a practical sense this would present enough of a hurdle for larger companies to prefer to pay (but plenty possible that it would not).
It is also possible to grant other licenses for situations where the GPL prevents some particular for-profit activity - that kind of approach is presently making some people some money, although the incentives can be weird.
However, everyone who has received your software under the GPL can sublicense it to the people who you denied the GPL to. You can't forbid it, but they don't have to, and you can nicely ask them to never sublicense it.
You can release code under however many incompatible licenses as you'd like, as long as you own all of the code in question.