What helps me (and this may be founded on illogical thinking - I'm no music theorist) is to know the scales for the various keys to determine what key a song is in.
To illustrate, I just learned a song called "Towering Fool" by Gov't Mule (I won't stick with protocol and post the lyrics because it's a blues/rock tune and probably not of interest to most members...but I will do so if requested). The chords in this song (not in order) are: Asus2; A7; B; C#m; C#mb6; E; G#; G#7. The scale for the key of A is: A; B; C#; D; E; F#; G#; A. All of the "root" chords for the song are found in the scale for the key of A, so the song is in the key of A. This particular song lacks one of those pesky key changes - so this method works well (for me, at least) in determining the key. Otherwise things get a little more complicated, but if your ear has heard thousands of songs, it's probably trained by now to notice a "difference" (hard to explain in technical terms...you notice it because the song suddenly sounds "higher" or "lower") that indicates a key change. If you can catch the key change, then you can apply the scales again after you've figured out the chords in the new key to determine what the new key is.
A lot of times the new key will be a full step higher or lower than the original key, e.g., if the above song were to change to a new key, it might go up to the key of B or down to the key of G. If the structure of the song remains the same (i.e., the chord intervals stay the same for the verse or the chorus or the bridge) then the chords in the new key will be a full step higher or lower than the chords in the original key.
Hope I didn't muddy the waters too badly.
Neil Lowe