Download HLDS (Half-Life Dedicated Server Update Tool) and run through the installation process, leaving everything as it is. Once you reach the part that says "Please select from your region...", choose the region of the world in which you are located. If you're in the Eastern United States for example, go with United States - East Coast.
Create a new text document and paste this inside:
C:\Program Files (x86)\Valve\HLServer\HldsUpdateTool" -command update -game "left4dead2" -dir "c:\srcds" -verify_all -retry pause
Note: The "-game" parameter specifies which game files to download. Others include "cstrike" (CS:S), "tf" (TF2) and "dods" (DOD:S).
Choose "save as" from the file menu and under file types, "all file types". Name it whatever, but make sure you add ".bat" to the filename and save.
Double-click the new batch file that appears and you'll see a command prompt. HLDSUpdateTool will now begin downloading and updating your server files as needed. When it's finished, you'll see 100% and then something like "your server is up to date." This will probably take a long time the first time you run it, but whenever a game is updated through Steam, run the batch file and only the updates will be downloaded.
Download Metamod: Source and extract the contents to your base srcds game folder. For example, c:\srcds\left4dead2\left4dead2, or c:\srcds\cstrike. You should now have an addons folder. Then download SourceMod and extract its contents (addons and cfg) to the same directory.
Go ahead and open up the srcds addons folder. You should see "metamod" and "sourcemod" folders, as well as "metamod.vdf". Open it with a text editor. The path inside should look like this:
Now enter the metamod folder and edit "sourcemod.vdf". Inside the brackets it should look like this:
"alias" "sourcemod" "file" "addons/sourcemod/bin/sourcemod_mm"
That's it. MetaMod and SourceMod should start automatically when you start up your server. To make sure they're working, type "meta" and "sm" in the server console. These should give you a list of commands. If you get "unknown command" instead, it's most likely a directory problem with the two VDFs I explained earlier. Further documentation on configuring SourceMod can be found at the AlliedModders' wiki.