Just have reread the question.
You have to chainload either the boot sector (eventually MBR) from USB or the file "boot.img" found in /boot/grub[/i386-pc] (size is also 512 bytes).
A possible reason for the method not to work on different disk is that the boot sector file addresses same disk e.g. disk is represented as constant 0x80 in boot sector file.
To chainload disk 1 for example the constant should be 0x81.
To chainload disk 2 - constant 0x82.
So we have a fixed scheme for addressing disks - you cannot freely move/remove disks or boot will break!
The position of this disk addressing byte is 0x40 for GRUB legacy or 0x64 for GRUB2 in boot sector file.
Version 0.9.4 of Visual BCD Editor is handling this addressing (version still not available to public, sorry).
Use HxD hex editor for example to edit boot sector file manually.
Hope this helps.