USB was never meant to be a multi-master buss.
The PC was the master and that all there was to it. Now that serial ports are a thing of the past, USB has become a defacto standard.
The USB manufactures have noticed that embedded systems need to be masters as well. But not enough to be a big profit center. So master chips and code is slow coming.
If you are under a time crunch, then look into purchasing a USB stack(?) from one of the master chip makers.
I have just finished a USB slave device. I am not a PC programmer, and the PC guy is not a embedded programmer. ( i.e. he really didn't understand hardware quirks, I don't really understand how M$ could make thing so difficult ) Lots of fun creating a package that works well on both ends.
Welcome to a brave new world. You are not the only one in this.
Good luck, after you solve your problems and get things working, someone in a few months will ask (like you), if you would share your code. You will of course say no. Just like people are not able to share now. There companies have spent $$ months to solve this product problem, and do not want to just give it away.
When USB vendors decide that our embedded systems need support as well as slave peripherals, maybe we will get some help.
hamilton