The menu entries are stored in the registry or are created dynamically using shell extensions.
Because the behaviour differs for the start menu and the desktop, it seems that the second option applies here. So you should check where you define the menu items (e.g. a setup program that creates registry entries for static menu items and your code that uses shell extensions).
There are free utilities to show and edit context menu items:
ShellMenuView - Disable/enable context menu items of Explorer[
^] and
ShellExView - Shell Extension Manager For Windows[
^]. These might help to identify where you add the additional items.