I know this question is horribly old, but I did manage to wander across it from a recent google search, so thought I'd throw in what I think is actually the answer to your question which the other answers seem to miss.
You're getting NULL for UIImagePickerControllerMediaURL as it is only returned for the Movie (kUTTypeMovie) media type in a picker. If you're presenting a default picker without specifying additional media types after it's creation, then the docs seem to imply that you won't get it:
"UIImagePickerControllerMediaURL - Specifies the filesystem URL for the movie."
And I can confirm that it isn't returned at least in the quick test that I did in iOS 6 for images (not Movies).
To access the image returned, you actually have direct access to a UIImage object under the keys of UIImagePickerControllerOriginalImage (if editing is not allowed, the default setting) or UIImagePickerControllerEditedImage if editing is allowed in the picker. The original image is always available, even if editing was done in the picker. You can treat these UIImage's just like you would any other UIImage in your program.