You may have been hearing about the iOS Version 4 a lot. You probably have installed it onto your iPhone/iPod Touch devices. It's got a couple of cool features that I think are significant. One is the ability to run applications in the background. Now, this isn't general purprose in the background as I understand it. Its for very specific situations. In my specific situation, I wanted to check the location of a phone and call a method when it's location changed (no, I'm not stalking you). Anyway, it looks like there are two steps in the process.
Step on in the process is for the application to tell the device that the app needs to recieve background updates. This is done through the Info.plist file. You will need to modify your file to look like this:

Notice the UIBackgroundModes entry. I added an entry for location. The three possible entries are:
I think that they are all fairly self explanatory.
The next step is to run some code to listen for events in the background. My code to do this is:
cllm = new CLLocationManager();
cllm.DesiredAccuracy = 1000;
cllm.StartMonitoringSignificantLocationChanges();
cllm.StartUpdatingHeading();
cllm.StartUpdatingLocation();
cllm.UpdatedLocation += HandleCllmUpdatedLocation; // an event to handle changes
and that seems to be it. I'm getting device updates in the bacground. Life seems to be pretty good on this. FYI, you might need to set your values differently, but this should get the point across.