Use this code in imagePickerController method to crop your captured image. It's working fine for me.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
    [_imagePickerControllerInstance dismissModalViewControllerAnimated:YES];
        UIImage *_pickedAvatar = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
       UIImage *croppedImage = [self cropImage:_pickedAvatar andFrame:CGRectMake(0, 0, 250, 250)];
   // croppedImage : U can use this cropped image for saving in gallery.
    }
- (UIImage *)cropImage:(UIImage*)image andFrame:(CGRect)rect {
   //Note : rec is nothing but the image frame which u want to crop exactly. 
    rect = CGRectMake(rect.origin.x*image.scale,
                      rect.origin.y*image.scale,
                      rect.size.width*image.scale,
                      rect.size.height*image.scale);
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
    UIImage *result = [UIImage imageWithCGImage:imageRef
                                          scale:image.scale
                                    orientation:image.imageOrientation];
    CGImageRelease(imageRef);
    return result;
}
else
See this question.
Use UIImage category and use wherever you need to crop image. 
@implementation UIImage (Crop)
    - (UIImage *)crop:(CGRect)rect {
        rect = CGRectMake(rect.origin.x*self.scale, 
                          rect.origin.y*self.scale, 
                          rect.size.width*self.scale, 
                          rect.size.height*self.scale);       
        CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], rect);
        UIImage *result = [UIImage imageWithCGImage:imageRef 
                                              scale:self.scale 
                                        orientation:self.imageOrientation]; 
        CGImageRelease(imageRef);
        return result;
    }
@end