Вы должны сделать это в viewWillAppear: или viewDidAppear: если первый не работает. Попытка сделать это в viewDidLoad не будет работать, потому что она вызывается после того, как представление впервые создано, и представление не является подчиненным ни к чему другому в этой точке. Насколько я понимаю, для того, чтобы вызывать presentModalViewController на себя, представление должно на некотором уровне отображаться в окне UIWindow.
Еще одна вещь, которую я только что заметил; ваш код теряет память в зависимости от того, как вы объявляете свойство imgPicker. если он объявлен с помощью retain вместо assign, то, если вы явно не отпустите его где-нибудь дважды, этот сборщик всегда будет существовать в памяти. В этом случае вы должны автоматически высвобождать объект init'd, назначая его свойству.