Like the other replies I think the question could be a little subjective, because something that is "good" for someone, could be poor or mediocre for others.
I would take the basic technical side of the photography, in order to differentiate a snapshot from a fair good photo, so in this way I would say a good photo should have: good composition, good focus and correct exposure. From there, we can add other elements like: deep of field, creativity, interesting subject (also subjective), etc.
For me, a good photo is the one you liked when you shot it.