Hiii Snowflake
I'm gonna be a bit lazy here and just paste you a link. Well laziness is the lesser part of it, but I think this article explains very well their usage, more than I could ever do.
http://lang-8.com/90163/journals/538243
Just to say, for a lot of Japanese people, they probably won't be able to explain to this degree. They wouldn't have analysed this topic area like this, and their everyday use of "は" and "が" is mostly from habit and experience ever since they were born.
P.S. If you are not proficient at kana/kanji, you might want to open Google Translate and turn on the "Read phonetically" option (press Ä symbol) as you're reading. Copy and paste the Japanese text into the box, translate from Japanese, and it will show you how to pronounce the sentence, since the author does not use Romanji in his examples.
Please feel free to ask if there are outstanding bits you don't understand!