You use any image program to create textures. I use photoshop. Save it as TGA (24) and use the vtex.exe program located in your source sdk hl2 bin folder.
It should create a TXT and VTF file, rename the txt to .VMF and edit the data (it is blank originally) so that you get the coding for the texture. Default simple code is:
"LightmappedGeneric"
{
"$basetexture" "dir in texture folder/texture name"
}
Once moved in to the appropriate texture folder, once you restart hammer you should see your new texture under its name. So just type in your texture hame in the texture application viewer and it should come up.
This was kind of a sloppy response because I am kind of lazy right now, and I am sure someone will post a link to a tutorial sooner or later - hope this at least gives you an idea