I have a UIViewController that is pushed onto a container controller and then popped off, and using the allocations instrument, I can see that the view controller is destroy
If dealloc is not being called by the VC, then I would bet there is a circular reference somewhere in your code, which is preventing ARC from calling dealloc.
Some things to check:
I was nipped in the butt when my delegate declarations did not utilize __unsafe_unretained.