I am not sure if something has changed in the iPhone SDK 3.0 but I am getting the strangest error. I have a view controller hierarchy where I switch between view controllers
I had been experiencing the same problem until deleted some 'bumping' code lines I used to push animation like those:
UIView* superv = navigationController.view.superview;
[navigationController.view removeFromSuperview];
[superv addSubview:navigationController.view];
Definitely, the above is 'breaking' way to go since 3.0 SDK had been issued by Apple. I've been forced to use push/pop approach instead. Didn't have the problem with 2.x as well. Make sure you don't have something similar in your code.
Hope, it helps.