Every time I empty a keg I rinse it a few times and mix about 3 gallons of hot tap water with either PBW or Oxyclean Free in it. I let it sit upside down for a good soak, invert and let it sit again. I then hook up CO2 and the beer line and run a pint or so through into a 2 qt. measuring bowl, leave it sit for about 15 minutes and repeat until the solution comes out clean after the soak. After that I rinse the keg well, add a couple of gallons and run most of that through the tap. Once every 3 months or so I follow that cleaning with Starsan.
In the past I tore the kegs down every 6 months or so and lubed all of the seals when reassembling. I had never run a brush through the dip tubes until a couple of months ago. When I did, I got absolutely nothing out of any of them, so it looks like my cleaning process is solid. Also, in more that 10 years I've never had any sigh of an infection.
After reading the post about cleaning the kettle with citric acid, I think next time I'll use that for the acid wash instead of Starsan. And yes, I will continue to tear down the kegs every 6 months.