How to automatically detect if image is of high quality?
You are making this way too hard. I handled this in production code by generating a histogram of the image, throwing away outliers (1 black pixel doesn't mean that the whole image has lots of black; 1 white pixel doesn't imply a bright image), then seeing if the resulting distribution covered a sufficient range of brightnesses.
In stats terms, you could also see if the histogram approximates a Gaussian distribution with a satisfactorily large standard deviation. If the whole image is medium gray with a tiny stddev, then you have a low contrast image - by definition. If the mean is approximately medium-gray but the stddev covers brightness levels from say 20% to 80%, then you have a decent contrast.
But note that neither of these approaches require anything remotely resembling machine learning.
I want an algorithm to detect if an image is of high professional quality or is done with poor contrast, low lighting etc. How do I go about designing such an algorithm. 
I feel that it is feasible, since if I press a button in picassa it tries to fix the lighting, contrast and color. Now I have seen that in good pictures if I press the auto-fix buttons the change is not that high as in the bad images. Could this be used as a lead? 
Please throw any ideas at me. Also if this has already been done before, and I am doing the wheel invention thing, kindly stop me and point me to previous work. 
thanks much,