When [camera takePicture] is called before the camera is ready, it spits out this message:
[camera takePicture]
UIImagePickerController: ignoring request to take pictu
To be honest I haven't tried it and the documentation is somewhat ambiguous, but what about [UIImagePickerController isCameraDeviceAvailable:...]?
[UIImagePickerController isCameraDeviceAvailable:...]
EDIT: As I just learned, this is not the solution for your problem. Sorry, I thought it might be worth a try...