ExitOnForwardFailure yes
is a good adjunct to the other suggestions. If it connects but can't establish the port forwarding it's just as useless to you as if it hadn't connected at all.
and yet another way to restart, on non-Upstart systems, is to use a line in /etc/inittab, something like:
tunl:2345:respawn:/usr/bin/ssh -n -N -T -R 0:6789:localhost:22 me@myserver
Upstart of course can be configured similarly but it's a bit more complicated.