If the goal of creating open-source software is for people to use it, it seems pretty righteous to then get upset when they do use it - regardless of what its used for.
If you require that someone contributes back to the community in a "meaningful" way, then you should expressly define it in the license agreement.
(Edit: You changed your post after I posted my response.)
Then, it's not even a legal issue, but more a social contract. (implied or explicit, depending somewhat on the licenses involved)