Many thanks for your ideas Zentara.
Do you know if there is a difference between the way you are redirecting the standard filehandles and the way I do it in my example with close? I've tried both now, and neither seems to solve the detach problem with the cygwin sshd. nohup also doesn't seem to have any meaning to cygwin - but I'm not forcing the connection closed. Maybe I can do that with an alarm?
At the moment I'm working with psexec again. I'm repeatedly sending simple psexec commands until one works, and then doing the important command. This seems reasonably reliable, if slow.