As someone who's gotten around virutally every time out exception ever made, I'm going to go out on a limb and say you can't prevent users from getting passed it. You can make it painful or more difficult to do it though.
For example, putting this setting in an unencrypted file (like a properties file) or registry will stop about 80% of people, but a number will still get through. Putting it in an encrypted file stops even more people but then people just change their clock date when they install the program or figure out how to edit the file.
I'd say the safest (and most annoying) solution is to have the client software be required to check with an administration server before the program loads so that it keeps track of use. IBM does this with many of their products like Clearcase, Clearquest, and Rational
Rose. The problem with this is that users can still crack it, and then you have to maintain a server and database with tracking information.
Ultimately, I want to say it doesn't matter which you choose. If you write good software that people like, they will pay. And if its for business's they will have to pay lest they get audited for thousands of dollars.