I had the same problem with both kernel and logos (but not upgrade). At Tony's advice I tried fiddling with download.c, adding debug messages etc, and - guess what - one of those versions (made slower by echoing characters read from serial, and with a alrge - unused - static buffer for those characters) works every time! I am baffled, because I am quite sure I didn't change anything save for that dump, which should, if anything, make things worse...
I am attaching a zip with both source and exe. The exe might or might not work on your machine, since I compiled it under CygWin using gcc, and I don't know whether it uses its own dlls (I don't have MS tools installed at home), but that's what the source is for
. Usage is
download_dbg zImage 10000
or
download_dbg logo.bin a000
Comm port is hardcoded to com2.
Let us know whether it works.