I made some progress with the UART on the USB port: I got a kernel boot log off it (attached). This is with resistor value 619K (RID_FM_BOOT_ON_UART).
To hook this up you need a USB-to-2.8V or 3.3V serial adapter. I'm using the Seeedstudio UARTSB v2.1, just because I already had one. Their latest version 3.0 UartSBee is
here and should also work. You can't use a USB-to-RS232 serial adapter, the voltages are all wrong. See this article for links to other suitable adapters:
http://www.instructables.com/id/Android-G1-Serial-Cable/
The hookup goes:
MicroUSB pin 2 (D-) -> UARTSB RXD
MicroUSB pin 3 (D+) -> UARTSB TXD
MicroUSB pin 5 (GND) -> UARTSB GND
MicroUSB pin 4/5 (ID/GND) -> 619K resistor
If you're using the UARTSB set the VCC switch to 3.3V. If you're using a TTL level board don't hook up the TXD to USB pin 3 as the voltage is too high, leave it disconnected or use a voltage divider to drop the voltage.
On your PC run a terminal program like Teraterm, select the UARTSB serial port and set the baud rate to 115200.
Switch the phone off, wait for it to shut down completely, then plug in the dongle. Like the USB jig version it switches the phone on automatically, then you should see the boot log in the terminal program.
The phone boots normally with this resistor value, that is it doesn't go into download mode. Its only use seems to be to turn on the serial output, as it doesn't appear without this resistor in place. The other UART resistor value, RID_FM_BOOT_OFF_UART, does exactly the same thing including switching the phone on.
The boot log is probably not a lot of use for most people but if you can't repair your phone it may give you some insight as to why it isn't booting. Also it could be handy for ROM developers.