Ruby 1.9 + SDL (380 325)
EDIT: Golfed down to 325 characters. Grid width/height is now 28 since 28*9 is the largest you can have while still using the value as the background colour. It also processes only one SDL event per iteration now, which obviates the inner loop completely. Pretty tight I think!
The simulation starts paused, with all cells dead. You can press any key to toggle pause/unpause, and click any cell to toggle it between alive and dead. Runs an iteration every tenth of a second.
The wrapping is a bit wonky.
require'sdl'
W=28
R,b,p=0..W*W,[]
SDL.init 32
s=SDL::Screen.open S=W*9,S,0,0
loop{e=SDL::Event.poll
r=e.class.name
r['yU']?p=!p :r[?Q]?exit: r['nU']?b[e.y/9*W+e.x/9]^=1:0
b=R.map{|i|v=[~W,-W,-27,-1,1,27,W,29].select{|f|(b+b)[i+f]}.size;v==3||v==2&&b[i]}if p
R.map{|i|s.fillRect i%W*9,i/W*9,9,9,[b[i]?0:S]*3}
s.flip
sleep 0.1}
Looks like this:
Fun challenge! I welcome any improvements anybody can see.