Before you start to process a picture in ANNs or some other classifier you can try an approach analogue to speckle imaging in astronomy. Essentially you take a large number pictures with very short exposures (for example 100 in 3 sec, 1/100 exposure) and average them out. By doing this you will eliminate errors in individual pictures and get Gaussian of the entire picture. Similar approach is used in HDR photography but will different exposure/shutter speed settings.
Most deployed face recognition methods use boosted decision trees of haar-like features. OpenCV has a free implementation. Mark up a few thousand of photos manually on your "unsuitable lighting conditions" (using images of exactly the same kind that you will use later) and train them. It will save you months of time otherwise needed to learn how to make neural networks work...
I understand you are interested in face detection, nit recognition ( which is the second step). I think you would find the method in the following paper of interest.
“Adaptive Color Space Switching for Tracking under Varying Illumination,” H. Stern and B. Efros, Journal of Image and Vision Computing, vol. 23, no. 3, 2005, pp. 353-364.
This paper was written for a 2D camera , but now I would suggest you use a 3D camera to avoid any background noise. Once you get the location of the face from a depth map ( in gray scale) you can then find the RGB color image of the face. Hope this helps
I guess you are interested in face detection using only 2D images, not depth, and with harsh illumination conditions. If this is the case I would undoubtedly vote for a good luminance normalization algorithm like the bioinspired one proposed by J. Herault, followed by a pretrained adaboost-based cascade classifier, using LBPs or Haar filters. If you use the OpenCV AdaBoost-based implementation you will not have the required robustness against harsh illumination conditions because the only preprocessing applied, as far as I know, was a histogram equalization.
On the other hand, if you want to use colour information, you have to be very careful with different colour temperature of the luminants because color maps for skin are usually quite sensitive to color temperature [1]. That's why a switching method like the one proposed by H. Stern is interesting in this scenario.
Finally, if you can use depth images the problem simplifies greatly and might not make sense to use any other aditional face detection method unless you want to make further face analysis, like face alignment and/or recognition.
I like Jose Luis Alba-Castro answer which sums it up nicely! I would strongly agree and advise using depth images. 3D cameras have dropped in price considerably and are now even available on some hand held devices. There is no use in trying to tackle the variable illumination face detection problem using a 2D camera coupled with a sophisticated image processing algorithm (what `I now consider "old technology"). Even if further face analysis is needed, it is still possible after detecting the face from a depth image to carry this out by using the associated color image usually available from RGB-D cameras.