An idea I had was to try to figure out a way to make pirating difficult enough that people would prefer to purchase the real version. I'd also like a way to do this that doesn't overly inconvenience legit users - and allows them to continue using the program even if the entity that created it in the first place went out of business. Note that I haven't actually tried this method in practice - it's at the idea stage right now.
The idea is that each download comes with some sort of keyfile that lets it run. When started, it contacts the server and asks for permission to run. If the server denys permission, the program deletes the keyfile, and refuses to run in the future. If it can't contact the server due to network problems, it waits several minutes and then runs. Otherwise, it runs normally.
The developer would then monitor places that may host pirated versions of the software. When he or she sees a pirated key, he adds it to a server-based block list. This causes the top of the google rankings to fill with broken versions of the software - making it increasingly more difficult to find an illegitimate copy - and hopefully pushing people to buy the legit version.
On the other hand, if the creator of the software stops monitoring for pirated copies, then those copies continue to work. This is, I think, a good property - it allows the software to become abandonware once the creator is no longer interested in making money from it. What's more, this method gives legitimate users the ability to run the software they paid for indefinitely.