What OS are you running? If you are running Windows 7, I would highly recommend setting hl2.exe to initiate compatibility mode (disable aero) as it causes all kinds of weird problems like this.
Having said that, I've seen funky things happen like this from time to time when using multiple monitors that have different refresh rates. Is there a reason why you are converting your TV from HDMI to DVI? It is possible that using an HDMI cable instead would eliminate this issue.
I've also seen instances where this problem gets resolved by making a change in the display drivers to enable GPU scaling instead of display scaling. I think on an ATI, it's under 'my digital flat panels / properties (digital flat-panel)'.
The fact that your issue is occurring intermittently opens up another possibility. Your card may be negotiating clock speeds. If you have anything else open that could potentially use GPU acceleration (like aero or anything with flash), it may be periodically setting your video card to idle clock speeds, which will certainly kill performance until the clocks are set back.
Lastly, drivers! Keep a copy of your current version, then update!