There is a fix, but it requires a manual reflash of a large part of the ROM. I'm pretty sure it was an incomplete update, and here's why.
vbindiff 70D/112/ROM1.BIN 70D/1120/ROM1.BIN # "1120" is your ROM (named that way to load it easily in QEMU)
Jump to 0xC0000 (absolute address 0xFF0C0000, i.e. where main firmware starts) and search for the next difference (ENTER). The first difference starts at offset 0042 0000: in your ROM, 0xFF all the way to 0044 0000 (not including that address). From that point, there are scattered small differences between the two ROMs, but these differences disappear when comparing with one of the two 1.1.1 ROMs. Last difference at 00DF 7DA0.
In other words:
0xFF000000 - 0xFF000003: main firmware flag disabled, easy to revert
0xFF000004 - 0xFF07FFFF: boot flags and other stuff; minor differences, looks OK to me
0xFF080000 - 0xFF0BFFFF: properties, minor differences, looks OK to me
0xFF0C0000 - 0xFF41FFFF: main firmware code, identical to firmware 1.1.2
0xFF420000 - 0xFF43FFFF: empty, 0xFF repeated (ROM was erased, but not programmed; firmware update was interrupted here)
0xFF440000 - 0xFFDFFFFF: main firmware code and other stuff; identical to firmware 1.1.1 from 2013 .09.25 13:56:21 (there are two 1.1.1 ROMs)
0xFFE00000 - 0xFFFFFFFF: bootloader and other stuff; same with both firmwares (no need to touch this range)
IIRC, the firmware update normally takes a couple of minutes to complete; progress bar stalling for 1-2 minutes is not unusual.
I wouldn't exclude a defective ROM chip, or a non-deterministic bug in the ROM reflashing routine or even on the hardware side (i.e. one of these things that happen once every 100000 test runs). I wouldn't exclude an accidental battery pull either (it happens pretty often here if I don't close the battery door well). One thing is clear: the firmware update was interrupted somehow in the middle of reflashing the main firmware.
After "reflashing" your ROM with this:
cp 70D/1120/*.BIN 70D/1121/
dd if=70D/112/ROM1.BIN of=70D/1121/ROM1.BIN bs=64K conv=notrunc skip=$((0x42)) seek=$((0x42)) count=$((0xE0 - 0x42))
it boots just fine in QEMU and shows the menus.