UPX is extremely easy to unpack - use a custom UPX implemenation of your own. I.e. scramble the alogorithm a bit and customize it so no hacker can find a decompressor for your packing alogorithm.

He can still unpack your program by looking into the assembly, but it is much harder when it is your own custom packing alogorithm.

Get the program called Stud_PE and find the site called "pro tools". Use all the tools you can, and pretend you yourself are the cracker.