I've been toying with a similar setup. Most of the time, you can actually get a really good estimate of the heart rate by doing simple-minded peak detection on the raw averaged brightness signal (e.g. using the algorithm here: http://www.billauer.co.il/peakdet.html). However, the iPhone camera can't be prevented from periodically adjusting exposure parameters (as far as I've been able to tell), and I've not been able to stop this screwing things up once or twice a minute. In other projects I've had some success using the FFT and windowing functions of Apple's Accelerate.framework, so I may see now if the Matlab code shown here can be translated to run in real-time on the phone.
You should be able to lock the exposure on the iPhone camera by setting AVCaptureExposureMode to lock (you can do the same for the white balance as well). But I might be wrong! It's been a while since I did camera work on the SDK.