Alexander, Thanks for the response. It looks like the problem was because I was running the code from a 32-bit Windows command shell. I'd had to do this because of a *very* weird problem with wildcard expansion in a batch script: see http://superuser.com/questions/773660. (In fact, if anyone here can suggest any reasons for that I would be very grateful...)
Once I switched back to using the 64-bit shell it all worked (touch wood). I *guess* this could make sense; using the 32-bit shell was creating some kind of filesystem-level permissions issue. Does that seem plausible? If it happens again I'll look at the TortoiseSVN daemon as you suggested... Stuart P.S. It seems that the file move was being done locally *after* the commit was physically made since the repo showed the commit as OK and, after clean-up of the working copy, I could svn update to it. Weird.