If I had to guess I would say that the delay comes from trying to run a GPUImageStillCamera and a GPUImageVideoCamera simultaneously. You could try doing something like this:
[videoCamera pauseCameraCapture];
UIImage *capturedImage = [filter imageFromCurrentlyProcessedOutput];
UIImageWriteToSavedPhotosAlbum(capturedImage, nil, nil, nil);
[videoCamera resumeCameraCapture];
That way you don't need a GPUImageStillCamera at all. Hopefully that helps!