There are a number of things that developers can do to protect their software, but most won't put their tips or techniques in a public forum (for obvious reasons ;-)
There is /some/ software out there that requires an absolutely unique USB key to be plugged into the computer in order to use the software. I have yet to see software cracks that can break this kind of hardware security, but I could be wrong.