Try setting putty's "Seconds between keepalives" option to something greater than zero, 300 is probably a good number. Since I set this option I've had no problem keeping my connections alive for long periods of time. I've never had any luck with TCP keepalives, so I don't bother with them.