Catch,
Can fill a book about the subject...maybe the
http://www.mlb.com site can help you, too.
Generally (and it is not intended to be all inclusive, folks).
1) Graduate from high school;
2) Any junior college player;
3) After your junior year or reaching age 21 if you are attending a 4 year school;
4) Anytime as a free agent if you didn't attend college and are 21 years old.
Held by Major League Baseball usually on the first Tuesday and Wednesday in June.