High ISO – As we briefly talked, higher the ISO, higher is the amount of grain.
Low light – Photos become grainy if enough light was not available when the photo was taken.
Too slow shutter speed – One school of thought believes if shutter speed is very low and light is low, photos may have lot of grain and noise.
Camera – High-end DSLRs usually perform better in low light and handle high ISO with minimum noise. Same can not be said about low end DSLRs and point and shoot cameras. These type of camera have a small sensor, leading to high noise as effective light getting to sensor is lesser than if it were a high-end DSLR, which have a bigger and better responsive sensor.
Excessive Post Processing – Another reason for grainy photos is over adjustment in post production. When sharpness of a photo is increased, grains/pixels in a photo become more prominent. If this adjustment is overdone, photo becomes grainy in no time.