A while ago I was interested in Undercover for Mac OS X. This application is supposed to help you recover a stolen computer. It connects to their service periodiocally. If your computer is stolen, you contact the service and then the next time your computer connects to the service, it takes and uploads a picture of what ever is in front of the computer and the service logs the location of the ip address.
It looks like they now have an iPhone application. It pretty much has the same functionality (I don't think it takes the photo though). The problem that I see with this solution is that it requires that the person to launch the Undercover application in order for the information to be logged to their service. I don't see people launching random applications if they steal an iPhone. Most likely, they will wipe it, and get a new SIM card. This will make Undercover pretty much useless.
Also, in my case, I lock my phone. So there is no way that the Undercover application will be launched for the service to log the iPhone's location.
Ideally, for this functionality, iPhone would allow applications to run in the background. Then it wouldn't require that the user launches an application. Alternatively, this could be a service that the cellular provider would provide