I would say that "congratulations on" is simply far more commonly used than "congratulations for". Other than that, I'm not sure that any clearcut difference can actually be made.
"Congratulations on" does suggest "on this occasion", and thus the congratulations tend to be focused on and offered for the outcome or culmination of someone's activities. However, that doesn't mean that the work that was done prior to the achievement is being ignored. And there would be no problem saying something such as this, for example: "Congratulations on having the courage to say what everyone else was too afraid to say."
To me, saying "congratulations for" would simply mean "congratulations for this reason".
People are waiting to help.
Related forum topics: