Well launch options can greatly improve this.
If you don't know what they are, right click on Counter-Strike, goto Properties, from there you should see a button labeled "Set Launch Options", click that.
I only bring all this up, cause I just formatted my PC and had to set mine again, they really do help, especially the mouse acceleration and the ability to set the refresh rate in gameplay instead of playing at 60hz by default. But remember, don't set a resolution or refresh rate your monitor can't support or basically, you'll just have to restart your machine.
Here is a list of them, and what they do.
* -console - this will enable the Half Life console. Press ~ (tilde) to bring it down in game, or use the console button in the main menu.
* -game <variable> - this will set the custom game to whatever variable is set. eg cstrike, dod, dmc. The valid variables are the abbreviated names of the mods inside your base halflife directory.
* -numericping - this will replace those goofy dots in the Halflife game browser with your actual ping time (measured in milliseconds, not dots )
* -noipx - this will disable IPX support. Which is fine, because you don't need IPX at all for Halflife. Recommended
* -noip - useful for single player. Will disable IP. (note: im not sure about this one).
* -nointro - This is to skip the two avi's at the start.
* -nojoy - disables joystick support.
* -noforcemparms -noforcemaccel - This will disable mouse acceleration. Useful for windows XP
* -toconsole - when you open hl.exe with this parameter, it will load straight into the console.
* -dev - enables developer mode. Useful for testing a homemade map, or debugging. Will show a more detailed summary of what is being loaded/initialized in the console. Use 'developer 1' and 'developer 2' in console to set debug message detail level
* -d3d - will use direct 3D only.
* -gl - will use OpenGL only.
* -soft - will use software rendering only.
* -full - will use fullscreen mode. Again, not important.
* -window - window mode.
* -wavonly - will disable directsound, and attempt to play all sound files as wav files.
* -w <variable> - sets video mode width (variable is number of pixels wide).
* -gamegauge - runs the demo in demoname.dem in benchmaking mode and saves the results in fps.txt file. 220.127.116.11+ only. Can do the same thing in-game with cl_gg 1; gg in the console.
* -heapsize <variable> - Where <variable> is how much RAM you got. Say you got 32 MB of RAM. Replace the variable with 32768. Don't be foolish and replace the variable with more than what you got in RAM. People with more than 64 MB of RAM sometimes feel that it's not using the RAM being supplied. Well, they're right. This command invokes to show Half-Life all the RAM that you have and it can be used.
* -particles <variable> - Variable number is the number of particles for which to set aside buffer space. This is useful for seraching for leaks in maps.
* -port <variable> - will set the port (for a listen server). Default is 27015.
* -zone <variable> - appears to solve most script memory errors if you set it to 1024 (I believe the default is 255). Maybe the max line length (in characters) of a script or cfg file.
* -noforcemparms - not sure what this does . I am guessing it disables multiplayer arms (weapons?).
Disabling mouse acceleration greatly improves your aim, basically, it aims at what you at aim at, not what XP is aiming you at.
Here are my settings, which basically gives me a good steady 100 fps on most maps.
-noforcemparms -noforcemaccel -noforcemspd -heapsize 512000 -freq 85 -dxlevel 70 -w 1024 -h 768