These days, I avoid changing the cursor at all, but provide feedback in other ways. If it's a long running process, it'll be performed in a background thread.
If you really must change the cursor, be sure to save its current value, and wrap it all in a try..finally, e.g.
SaveTheCurrentCursorAndChangeToHourGlass;
try
DoSomeLongProcess;
finally
RestoreCursorToWhatItWas;
end;