didReceiveMemoryWarningが呼び出されているのに、viewDidUnloadが呼び出されていないという状況が発生しています。didReceiveMemoryWarningのドキュメントには次のように書かれています。
このメソッドのデフォルトの実装は、ViewControllerがそのビューを安全に解放できるかどうかを確認します。これは、ビュー自体にスーパービューがなく、nibファイルから、またはカスタムのloadViewメソッドを使用して再ロードできる場合に可能です。ビューを解放できる場合、このメソッドはビューを解放し、viewDidUnloadメソッドを呼び出します。
ビューコントローラはその時点では表示されていませんが、モーダルの親です(通常、メモリ警告が発生したときにイメージピッカーの下にあります)。ビューはリリースできるはずのようですが、何かが足りないのかもしれません。
これが重要な理由は、ビューがリロードされたときにviewDidLoadが呼び出されることを前提として、didReceiveMemoryWarningにキャッシュされたデータを解放しているためです。ただし、viewDidUnloadが呼び出されていないため、ビューが再度表示されているときにviewDidLoadも呼び出されません...