pydfu and dfu-util can only update over USB (in particular directly connected USB).
You can update the firmware via other means. You don't need to redirect the REPL (except perhaps to help you get into bootloader mode).
I've written up what I've done in the past over here:
http://blog.davehylands.com/2014/02/ser ... m32f4.html
Note that because the micropython image is a split image and has the filesystem in the middle, this will wind up wiping out the contents of the filesystem.
I haven't tried it, but I think you can take the firmware0.bin and firmware1.bin files and flash them seperatley as long as you provide the appropriate address to stm32loader.py. I'm also not sure if you need to get back into DFU mode between the seperate flashing operations.
AN2606 from STM covers the various bootloader modes available.
http://www.st.com/content/ccc/resource/ ... 167594.pdf and in particular, Table 50 shows the various devices that can be used with the ROM based bootloader.
It looks like serial bootloading is only supported via USART1 and USART3.
If you wanted to update via UART2, then you'd need to write your own bootloader.