You can create an mdraid RAID-1 array starting with an existing partition. First, you need to make room for the mdadm superblock, which means you need to shrink your filesystem a little.
At the moment, the normal superblock format is 0.9. Its location is between 128kB and 60kB from the end of the partition, it is 4kB long, and it starts on an address that is a multible of 64kB. So shrink your filesystem by 128kB, or more precisely to ((device_size mod 64kB) - 1) * 64kB.
If you want more than 2TB per stripe, you need the 1.0 superblock format, which isn't supported out-of-the-box by all distributions yet. The 1.0 superblock is at the end of the device, which I understand to mean that you only need to shrink your filesystem by 8kB.
Now that you've shrunk the filesystem, you can create the array. First create a degraded array with just the existing data. Make sure the filesystem isn't mounted at this point. For your use case the write-intent bitmap must be on a separate partition. Use
-e 1.0 to use the newer version-1 superblock format.
mdadm --create /dev/md0 -e 0.9 -l 1 -n 2 \
--write-behind=256 --bitmap=/path/to/bitmap /dev/sda1 missing
Now you can mount the filesystem in
/dev/md0. Add the second disk at your leasure. The data will be copied to the new drive in the background.
mdadm --add /dev/md0 --write-mostly /dev/sdb1
I've created a mirrored array like this, but without write-behind mode. I don't think write-behind mode would invalidate the procedure.