In a perfect world, you have 0ms latency, and 0ms combined input lag and monitor response time. Of course this is out of reach but that doesn't mean there isn't something you can do to at least get it closer.
Although there is little you can do to lower these in game besides lowering your lerp, most graphics card manufacturers provide tools that can force certain settings. But first of course you want to do all you can to lower these values in game. Voidy's networking post in this forum along with pretty much every guide in existence goes over these.
I also use these launch options:
-threads 4 -high -novid -heapsize 4194304 -refresh 144 -noforcemaccel -noforcemparms -noforcemspd
Would warrant changing heapsize parameter if you have < 8 GB of RAM
Change -refresh to your monitor's refresh rate
Now, after attending QuakeCon this year and seeing NVidia's booth I realized how similar the effects of Triple-Buffered V-Sync and their new G-Sync monitor chip are. Up to this time I had v-sync disabled and was just using fps_max at a multiple of my refresh rate. However, this is not optimal. There are a few settings you can set on your graphics card's options to further lower input lag.
These settings are Triple-Buffering and Max Pre-Rendered Frames.
For NVidia cards this can be done in both NVidia Inspector and the NVidia Control Panel.
NVidia Inspector on the left, NVidia Control Panel on the right
If you have an AMD card, you will have to search around the control panel for the settings, they should be in a relatively similar place.
Now once triple-buffering is enabled, you can enable v-sync in game which will lower your input lag to about as low as it can get.
But why is this better?The problem with just limiting your framerate to no matter what value is the drawn frames will get sent to the monitor in random intervals and aren't guaranteed to get displayed. Not only are you wasting processing power drawing those 300 frames you don't use, the frames aren't going to be synchronous. The solution to this problem is Vertical Sync. However, this imposes more problems than it is worth using traditional double buffering. The problem?, in double buffering you have 2 buffers that the graphics card draws images to, switching to the next after finishing with one. The problem that vertical sync presents is when the graphics card is done drawing a frame it can't switch and begin drawing the next one until the monitor is done with the frame that was drawn on the other buffer. This creates input lag. The solution? Triple buffering. In triple buffering you have an additional buffer on top of the 2 from double buffering this allows the graphics card to copy the finished frame to the new buffer allowing it to begin drawing the next frame.