Problem was that a large app would hang when running on a specific platform (Symbian N97 mini).
After following up false leads for a week, I finally started inserting trace statements into the code, and slowly narrowed it down to one routine that was doing a lot of dynamic_cast operations from QWidget to subclasses of the same. Often these casts were "wrong" and they looked for a null/non-null result to indicate which class was which.
Replaced the dynamic_cast operations with qobject_cast and the problem went away.
I'm guessing that parts of the C++ support on the box were not compiled with RTTI enabled.