Just had the same problem with my new Arduino Micro:
I first installed the driver from an administrator account on my XP machine, everything looked ok and I got a new COM5.
I then switched from the admin account to my usual one (with limited user privileges)
Uploading Blink example failed with same avrdude error as above.
I then tried to move the Arduino from a port on an USB hub directly to the computer's USB port the hub was originally connected to. XP then detected a "new device". As I wasn't confident about the new installation that followed from my limited rights account, I switched again to my administrator account and redid the install. This time I got a COM7 port (COM5 "being used", the system said...)
Back to my user account, I tried to upload the Blink example again and this time it worked. It was not even needed to press and hold the reset button on the board.
I don't know what from the hub or the driver installation was faulty, but fiddling with this solved the problem.
What remains unclear to me is the numbering of COM ports. We can see in the log that my COM7 is indeed used, but then there is a COM6 involved (I never configured any COM6) and I don't know what is now "using" my original COM5...
Binary sketch size: 4'816 bytes (of a 28'672 byte maximum)
Forcing reset using 1200bps open/close on port COM7
PORTS {COM1, COM2, COM7, } / {COM1, COM2, COM7, } => {}
PORTS {COM1, COM2, COM7, } / {COM1, COM2, COM7, } => {}
PORTS {COM1, COM2, COM7, } / {COM1, COM2, COM7, } => {}
PORTS {COM1, COM2, COM7, } / {COM1, COM2, COM7, } => {}
PORTS {COM1, COM2, COM7, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, COM6, } => {COM6, }
Found Leonardo upload port: COM6
D:\bin\arduino-1.0.2\hardware/tools/avr/bin/avrdude -CD:\bin\arduino-1.0.2\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega32u4 -cavr109 -P\\.\COM6 -b57600 -D -V -Uflash:w:C:\DOCUME~1\rik\LOCALS~1\Temp\build750296717876464168.tmp\Blink.cpp.hex:i
.
<SNIP>
.
avrdude: 4816 bytes of flash written
avrdude: Send: L [4c]
avrdude: Recv: . [0d]
avrdude: Send: E [45]
avrdude: Recv: . [0d]
avrdude done. Thank you.
Setting baud rate to 9600 on COM7