Before you start i would suggest you bind the jump control to the mouse wheel up of your mouse, in the options -> Settings. Make mouse wheel up as your alternative jump, the default being SPACE BAR.
Push the 'W' key to get an initial run up.
RELEASING the 'w' key press the strafe key (D or A) and move your mouse in the direction of the strafe(ie: if 'A' move mouse left in a little arc or if 'D' move mouse right by say 30 degrees) + JUMP
You will now initiate a forward curved jump , in the left or right direction(Please note never to use the 'w' key for acceleration here after).
When your about to land after the first jump, hit the opposite strafe key and curve your mouse in the same direction of your strafe and hit jump EXACTLY when you land after the first jump. Doing this a little too early or little too late will cut the bunny hop.
If You got the timing and mouse movement right you will quickly move forward faster, and you will need to repeat Steps 2 to 4 repeatedly.
The trick is to get the rhythm and keep going left n right n left n right with both your strafe and mouse movement, hitting jump at the right time of landing.
You can also Reverse Bhop by replacing the forward key with back key, and following the same steps mentioned in the article. Reverse bhop makes you bhop backwards, and can be used to make quick escape jumps when being shot at.
NEVER HIT THE FORWARD KEY ONCE you start B hopping. Acceleration is obtained by using strafe and proper mouse movement. Forward key is only used for initial acceleration.