I don't know is there anyone considered this:
1.Developer combine a build-in Bitcoin client with his software.
2.When end users download his software and open it for the first time, a bitcoin account will be initialised and a bitcoin address is generated.
3.End user need to transfer some bitcoins to the address to active the software, lets say 10BTC for example.
4.When end users clicked the "active" button, some of the money will transferred to developer's bitcoin account, lets say it is 5BTC.
5.End user need always keep the rest 5BTC in the software's account, otherwise the software will become deactivated. This make sense to prevent end user from sharing it to public, because others can always transfer the rest 5BTC out, and make all shared software that from same source deactivate.