It sounds like you have a zombie.
A zombie is an object that gets called after it is deallocated. Often, the memory address of the object is then used for another object, so the message goes to the wrong object.
Do you have code that registers one of your application objects for a "did enter background" notification (UIApplicationDidEnterBackgroundNotification) using the method addObserver:selector:name:object:? And does that notification specify a selector of "didEnterBackground:?"
My guess is that you're registering for UIApplicationDidEnterBackgroundNotification notifications, and then the notificationObserver you're specifying is being deallocated. That would cause the exact behavior you are describing.
BTW, you might want to run your app using the zombies instrument, or turn on the NSZombies environment variable to look for zombies. Then press the home button to cause the crash and see what Xcode/instruments tells you.