This is a bug in iOS 6 with autolayout. The only workarounds I could figure out were to disable autolayout or set the picker selection in viewDidAppear: instead of viewDidLoad or viewWillAppear:.
See the following for more info: UIPickerView can't autoselect last row when compiled under Xcode 4.5.2 & iOS 6