To an extent I'm sure we all realize piracy is going to happen. You can put as many locks on your software and either the pirate is going to break the lock or you are going to suffer a performance/usability hit most likely.
So what realistic options do we have to minimize piracy? Excluding Apple coming up with a super awesome method to prevent it forever of course since that probably won't happen.
Lite version - You can of course make a free limited feature set version of your app. I have used them to evaluate an app before and it seems to be a decent method. Issues with this are the possibility of extra effort on the developers part and the pirate will say, "I pirated the full version to test out everything!".
Ad supported - If your app has ads on it in the free version that can help in that you'll get revenue just from your ad running but the pirate will prefer the cracked version to not have the ads. Not a good solution in my opinion.
Detect it via the info.plist - I read a post on
http://thwart-ipa-cracks.blogspot.com/ regarding ways to log who is stealing your App. While it works (I assume) I'd hate for something to trigger on a legitimate user to cause their program to malfunction. Plus if/once enough apps adopt this my guess is the pirates will work around it. Depending on the maliciousness of your code Apple might theoretically reject your app also I suppose.
Don't worry about it - This is of course the easiest way. Most of the people will probably play with your pirated version of your app for a few hours then move on to another. With so many apps at their disposal it's impossible for them to use any but the best few they enjoy. And who knows... maybe them showed the cracked version to a friend who doesn't crack their phone will inspire the friend to buy the real version because they like the app.
Petition Apple to allow trial periods - What if Apple allowed developers to set full usage rights to an app for a given time period? When putting your app on the store you could set 10 hours of use or something for an app? Then any app marked with this would have a trial and paid version where a user could download the app and use it for 10 hours of actual time before it would no longer launch without a purchase. The time would span across any upgrades of your app. The timer would be bound to the iTunes account somehow on Apple's servers. Of course you could adjust the free play time depending on the nature of your app. Then pirates may find it easier to just play the trial version, most would get bored by the end of the time frame. All it would really do is reduce your piracy numbers. You'd still have the app collectors that pirated to pirate but those outliers you're not going to fix.
Any other ideas?