The easiest way to do this seems to be just plain changing the mouse cursor to a composite image of the default mouse cursor and the image you want following it. Then after you are finished change it back to the default mouse cursor.
There are ways to do this with P/Invokes, but here is a theory on how to do it without them. In examples I've run across P/Invokes are primarily used to get a pointer to/for a cursor Structure that has been created and Marshalled into unmanaged memory. Then the Pointer is passed to the Constructor for the System.Windows.Forms.Cursor Class.
However, there is an overload in the Cursor Class that accepts a Memory Stream. If the same cursor file structure could be constructed in a Memory Stream, it could then be passed into the Constructor, which would give us the Cursor to change to. The 'cur' image file is very similar to an 'ico' file, and is fairly simple. It consists of a small header, an image directory, and finally the image data itself (Wikipedia entry on the ICO file format). This should not be too hard to construct and then write out to a Memory Stream.