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!"