Make the combination of --write-batch with --dry-run create a batch file without
actually updating the destination. (The current behavior is to complain if the
user tries to combine these options.)
The implementation would require rsync to do more work in --dry-run mode than
normal when --write-batch is specified (i.e. generating checksums, computing
diffs), but still not send the update-data to the receiver (just to write it to
the batch file). This _might_ be fairly easy, but I haven't checked yet to be sure.
(Suggested by Peter Hartley.)

This should not be that hard. The generator would need to be modified so that
it actually computes the checksums and sends them to the sender in this mode and
(for a push) the sender would need to be enhanced to output its changes to the
batch fd instead of the socket, or (for a pull) the sender would need to go
ahead and send its update data down the socket while the receiver would just
throw away the update data after recording it. Also, the --write-batch option
would need to be sent to a server sender (which it is not currently) to trigger
the right mode (when pulling files). Care needs to be taken to test for
compatibilty problems in this regard (since we currently avoid sending
--write-batch to the server for compatibility reasons).

I want --dry-run to always indicate that no changes will be made whatsoever, so
I'm changing the summary of this bug to correspond with a new option that now
has a diff in the "patches" dir of CVS: --only-write-batch=FILE. This option
accomplishes the functionality you requested, while both avoiding the
aforementioned compatibility problem that using --write-batch would entail, and
allowing --dry-run to be fixed to work properly with --write-batch/--read-batch
(which is now the case in CVS -- this combo just reports what would happen
without --dry-run).
Note that 2.6.4 won't have this new option because the patch still needs some
more testing (and the option name may change before the dust settles).