Some people were asking what settings I use in game and wanted a little help, so here is some help I have to offer:
*always use net_graph to monitor your tweaking and connection (I use net_graph 3)*
Be sure to adjust your rates to accomodate your connection: rate, cl_updaterate, cl_cmdrate, etc..... Use netgraph to monitor how the settings are doing as far as ping, packetloss or choke.
I am on broadband and these are the rates I use:
rate 25000
cl_cmdrate 100
cl_updaterate 15
The cmdrate you should always be able to keep at 100, updaterate I would start at 15 and increase it in increments of 5 until you start seeing choke and/or loss (packetloss). Then back it down by one at a time until you are seeing no loss or choke.
Remember the lowest ping is not always what you are wanting, the stable ping is, on gc servers I can get my ping down to 15, but it ranges between there and 40. So I have it set to where it stays between 25-30. Reason for this? So I know where to be shooting for each target. With the ping varying more, the interp will affect your shots differently, so you want it to stay as close to the same number ms as possible.
One thing many people may notice is their shots not registering, when they are dead positive that they should have hit the guy. On a connection that has no loss or choke, that is due to improper set up between your interp and ping. The default in CS:S is cl_interp 0.1, this setting is telling your client to tell the server "hey, I have a ping of 100, so determine where that player that I was shooting at was compared to where I shot." Well if you have a ping of 40 and you are telling it to accomodate for a ping of 100, you would always have to shoot behind a player to hit them, not fire where they are at (on moving targets).
So use this and determine where you need to be:
ping / cl_interp rate
100 / 0.1
80 / 0.08
50 / 0.05
30 / 0.03
You may have to adjust the interp rate from server to server all depending on your ping. And always adjust this rate last.