Learn the progressions, or musical patterns, of the song first. Then practice it in all keys rather than just the original key. For example, if you play a C major chord in the key of C, then music theory tells me that you are playing a 1 chord. In order to play that same chord in every key, all you have to do is the play the 1 chord in every key. Here is the illustrated version:
C major scale = C D E F G A B
1 chord = major (C-E-G)
2 chord = minor (D-F-A)
3 chord = minor (E-G-B)
4 chord = major (F-A-C)
5 chord = major (G-B-D)
6 chord = minor (A-C-E)
7 chord = diminished (B-D-F)
C major chord = C-E-G *1 chord in the key of C
Now that we know most of the basic music theory for the key of C, now we are going to go to another key and do the same thing. Let's go up 1/2 step to the key of C#:
C major scale = C# D# E# F# G# A# B#
1 chord = major (C#-E#-G#)
2 chord = minor (D#-F#-A#)
3 chord = minor (E#-G#-B#)
4 chord = major (F#-A#-C#)
5 chord = major (G#-B#-D#)
6 chord = minor (A#-C#-E#)
7 chord = diminished (B#-D#-F#)
Now, we want to play a 1 chord in the key of C#, which is C#-E#-G#. There you have it, you have successfully played the same chord from the key of C in the key of C#. What about a key that's not 1/2 step away? Let's try Ab:
Ab major scale = Ab Bb C Db Eb F G
1 chord = Ab-C-Eb
2 chord = Bb-Db-F
3 chord = C-Eb-G
4 chord = Db-F-Ab
5 chord = Eb-G-Bb
6 chord = F-Ab-C
7 chord = G-Bb-Db
Now, we want to play a 1 chord in the key of Ab, which is Ab-C-Eb. There you have it, you have successfully played the same chord from the key of C in the key of Ab. See how quickly you can play in other keys just by knowing your music theory?
Also, i have done many posts on progressions and music theory. Here are some links to get you started:
Basic Progressions =
http://musicianslearningcenter.com/home/modules.php?name=Forums&file=viewtopic&t=24More Advanced Progressions =
http://musicianslearningcenter.com/home/modules.php?name=Forums&file=viewtopic&t=21Progression Practice Routine =
http://musicianslearningcenter.com/home/modules.php?name=Forums&file=viewtopic&t=19