Standard Picture Spray
From what i'm aware, smaller seems to be better and they are more likely to work if they are square shaped rather than rectangular. They must be in either of the following formats - .jpg/.bmp/.tga or .vtf. These are easy enough to make, to import them into the game go to 'options' then select 'import spray' and browse to your image of choice.
Static Transparent Spray
You will preferably need Photoshop for this, i don't know the way to do it in any other program, however i'm sure it's possible along similiar lines.
1) Open up Photoshop and create a new image with a transparent background.
2) Import or create your new image, make sure that whatever you want to be transparent in the picture is still showing the chequered background.
3) Merge all the layers down (Shift + Ctrl + E) and Ctrl + click the little mini picture on the layer, it should select only the part you want to be visible.
4) Select the Channels tab in your Layers window, then click on 'Save selection as channel' and click the empty box in the new layer which appeared, the bit which will appear transparent should turn red and in the mini pic it should show the visible bit as white and the transparent bit as black.
5) Press Ctrl + D to deselect (not sure if this is needed, i'll test it later on).
6) Go to File > Save as, then choose the format as Targa (.tga) and name it to whatever you wish. Save it as 32 bit.
7) Open up CSS and import it through the 'options' menu.
Animated Spray
You will need to download Smiddy. Once you've done this, continue.
Try to get each file as small as possible, because if the end result is bigger than 120kb, it won't work!
The dimensions of your pictures must be a power of 2.
If you want to make a current gif into a spray you should open the gif in Imageready and go to File > Export > Animation Frames As Files (remember to check dimensions are a power of 2).
1) Create each frame of your animation and save them. Make sure they are all saved as .tga files at 32 bit!
2) Name the first frame in the animation as spray001, next as spray002..etc..
3) Move each frame into your smiddy/hl2/materialsrc/animated folder.
4) Open spray.txt and change the endframe number to the last frame in your gif.
5) Go back to the main Smiddy folder and double click on the convert.bat file, it shouldn't say any errors in here! Once you hit a key to continue it will close it.
6) Navigate to your smiddy\hl2\materials\animated folder and rename the two files to whatever you wish, keeping the extensions intact of course.
7) Move these files to your counter-strike source\cstrike\materials\VGUI\logos folder.
8) Open CSS and choose your spray from the spray list (it should be in there and showing the first frame of your animation).
If you hear the spray sound but see no spray or if it's not working at all then it's likely that the .vtf file you created was too big! (over 120kb). Unfortunately you will have to create a smaller picture.
Animated Transparent Spray
This is easy to explain, remember to make sure your file dimensions are a power of 2 and as small in file size as possible.
Follow the steps of the Static Transparent Spray for each frame of your animation, then continue from step 2 of the Animated Spray.