This definition came from PCFlank
This is the best definition of a cracker I could find and it fits a few people here down to a T.

Cracker - is someone (a creep, really) who breaks into other people's computer systems often with the purpose of stealing confidential information or vandalizing the system. They are looking for a weakness in the computer's security, some channel into the system. There are more and more software and hardware tools being used in these attacks so practically any moron with basic PC skills can become a cracker.

The definition of a hacker from PCflank wasn't very detailed nor accurate so here's one from Webopedia:

Hacker - A slang term for a computer enthusiast, i.e., a person who enjoys learning programming languages and computer systems and can often be considered an expert on the subject(s). Among professional programmers, depending on how it used, the term can be either complimentary or derogatory, although it is developing an increasingly derogatory connotation. The pejorative sense of hacker is becoming more prominent largely because the popular press has coopted the term to refer to individuals who gain unauthorized access to computer systems for the purpose of stealing and corrupting data. Hackers, themselves, maintain that the proper term for such individuals is cracker.

The reason that the definition of a hacker has became derogatory is due to the increading number of script kiddz, virus writers, and the media. Being called a hacker used to be a very high compliment and most people took pride in it. Now the name has been drug through the mud and increasing over used. I don't see why the mainstream public can't distinguish the difference between the two..