No method is unhackable. Good crackers can modify the code inside your local copy of the EXE to bypass validation entirely (online or offline), for example. All you can do is make it more difficult. Think of a version of your program written with no validation at all, then think of a cracker working to make your validated app look like that. (Also, it's not too hard to locate particular strings eg. your personal details in an EXE with a hex editor, so unless you used encryption that's easily subverted too).
Settle on something simple enough that you don't waste days on it, but keeps script kiddies off your back, IMO. Also remember, the more popular your application, the more likely expert crackers will give it a shot. Small scale apps probably don't need hardcore protection - but that's not to say someone's not going to pwn it anyway.