1) Draw the image and save as .png, and make sure it is square like 32x32 or so. If this is the main cursor name it 'ptr.png'.
2) Write a text file called 'ptr.conf' that contains:
The first number is size, in this case 32 (32x32), the next is the hotspot (where you click), the pixels start from the upper left corner and numbering goes to the right for x and down for y. So 15 0 means 15 pixels from the left edge and 0 pixels down.
0 1 2 3 4 5 ... x
xcursorgen ptr.conf ptr
making sure ptr.png is in this some directory. This will generate a cursor file 'ptr'.
4) Replace it in a theme or add it to a new theme, and that's it. You can also make animated cursors. Read 'man xcursorgen' for more info:
Each line in the config file is of the form:
<size> <xhot> <yhot> <filename> <ms-delay>
Multiple images with the same <size> are used to create animated cur-
sors, the <ms-delay> value on each line indicates how long each image
should be displayed before switching to the next. <ms-delay> can be
elided for static cursors.
If you want to start off with a theme you can try one that I made:
I've included various scripts to make things easier, at least for me. Now all I have to do is edit the images every time I want to make a new cursor theme and then run the scripts.
You can also use another cursor theme as a model for what you want to do, but make sure to find a FLOSS one. Some are not and don't include the images...