If you want an extreme protection ==> PPF
If you clean/wash your car by hand ==> ceramic coating
Check out the link in my signature, I went with a Gtechniq ceramic coating right when the car was new because I thought it would make the cleaning process easier, and I'm very satisfied.
Also, at the beginning I thought that I'll be keeping this car for a short period of time, so PPF wasn't an interesting option because of it's high price.
For those who say that if you need a respray, the paint will never match with the rest of the car is absolutely WRONG.
For information, after a very small accident, the front bumper and right front wing were replaced and resprayed : you could never tell the difference.
You just need to have a good bodywork (BMW in my case) who knows what he's doing, and you'll be just fine!
I'll post 2-3 photos of how my car looks after 3 years of ownership and many roadtrips.