Difference between "I'm fine" and "I'm good"
In common usage, "I'm fine" is a generally positive way of saying "There's nothing particularly wrong"; yet it also means that there isn't anything superlatively right, well, or good.
"I'm good", however, is a positive assertion that your personal situation and the events surrounding it are supererogatory compared to your usual state of being. That is, by describing your state of being as "good", you suggest that your personal situation is definitively satisfactory, in all respects.
Basically, "I'm fine" means "I'm OK", "I'm getting by with no problems", and so on, while "I'm good" suggests "I'm happy", "I am currently aware of how well I am, and how well my life is going", "I'm satisfied, content, and am quite enjoying myself", etc.
You can think of it this way:
"Are you sick? You look pale, and weak."
"No, I'm fine! Please, stop worrying about me!"
versus:
"Are you sick? You look pale, and weak."
"No, I'm good! I've actually been working out indoors, recently, and I may be pale, but I'm certainly not weak. I feel great!"
Although the OP specifically mentions the US, it's worth mentioning that this also has a bit of US/British variation. "I'm good" to my (Brit) ears sounds a bit American, although its use is becoming increasingly common on this side of the pond. I think it's related to the increasing use of "good" instead of "well" in some informal contexts e.g. "How did you get on at the interview? I did good, thanks".
"I'm fine" means the same as "I'm well". I.e. I'm not ill.
"I'm good" means that I am morally sound: for instance, I do good deeds, I think good thoughts.
This latter meaning is being used more and more to mean "I am well".
In UK English, "I'm fine" is the standard reply to "How are you?"
"I'm good," means I am well behaved. A child is likely to say this.
I cannot comment on American English - I had never heard of "I'm good" being used as an alternative to "I'm fine" until I came across this forum.