Make a zip file called <mapname>.zip with the following directory structure;
/maps/<mapname>.bsp
your map file
/maps/<mapname>.aas
your map's bot file
/levelshots/<mapname>.jpg
your map display shot
/textures/<mapname>/<mapname>_<texturename>.jpg
a custom texture
/textures/<mapname>/<mapname>_<texturename>.tga
another custom texture
/scripts/<mapname>.arena
makes your level turn up in the menu
/scripts/<mapname>.shader
a custom shader for your map
/<mapname>.txt
some info about your map
Once you have made the .zip file you need to rename the <mapname>.zip to
<mapname>.pk3
If you use Microsoft Windows, you may need to enable file extension. You
can do it as a folder option from the Windows Explorer menu. Then place
the .pk3 file into a zip file with a copy of the readme.txt file.
Placing it in a .zip makes for easy download as some servers/browsers
mis-read .pk3 as text (because of MIME settings).
Thats about all there is to it.