Good points about position. I've had several sessions where I stay at the table so long that it is a completely different environment from when I first sat down. If I get someone new behind me who raises too much then it can impact my decision on how long to stay at the table.

As a general rule I try not to leave a table where I'm winning even if the players are good. However, once I lose a hand or two and I know the players are solid then I'll get out and find a better table.