Are you guys both on Windows? I noticed that the Windows timeout values are defined much longer and I wonder if this is related. For Linux the timeout is 200mS but WIN32 is 999 mS. Note that I do all my testing on Linux and libusb could behave differently here.
I tested it first on Windows several days ago. KTest worked fine but CGMiner always gave timeout(-7) error so I changed the timeout to 999ms and the timeout error's gone but still had the stuck problem and low hashing rate. I moved to a real Linux box and there's no timeout error with 200ms setting but have CGMiner stuck problem until I added the "nmsleep(100);" as terrahash suggested. I tested it on both a laptop with Debian 7 and a desktop with Debian 6, all the same.