<p>On POSIX systems rename(2) provides for an atomic rename operation, including overwriting of the destination file if it exists and if permissions allow.</p>

<p>Is there any way to get the same semantics on Windows? I know about MoveFileTransacted() on Vista and Server 2008, but I need this to support Win2k and up.</p>

<p>The key word here is <em>atomic</em>... the solution must not be able to fail in any way that leaves the operation in an inconsistent state.</p>

<p>I've seen a lot of people say this is impossible on win32, but I ask you, is it really? </p>

<p>Please provide reliable citations if possible.</p>

you still have the rename() call on Windows, though I imagine the guarantees you want cannot be made without knowing the filesystem you're using - no guarantees if you're using FAT for instance.
However, you can use MoveFileEx and use the MOVEFILE_REPLACE_EXISTING
 and MOVEFILE_WRITE_THROUGH options. The latter has this description in MSDN:
Setting this value guarantees that a
  move performed as a copy and delete
  operation is flushed to disk before
  the function returns. The flush occurs
  at the end of the copy operation.
I know that's not necessarily the same as a rename operation, but I think it might be the best guarantee you'll get - if it does that for a file move, it should for a simpler rename.