Most USB devices need an input to use for usb Vbus detect.
So the mcu knows when usb is plugged in and when to start talking.
Have you looked at the stm32 datasheet/USB DFU app notes for how you're supposed to do USB vbus detection on the STM32?
From what you have said it sounds like the STM32 doesn't know USB is connected.
EDIT: Looks like VBUS detect input isn't needed for USB DFU
Also, just FYI i have noticed with some STM32 and UART BOOT modes that, not only do you need to set BOOT pins correct, but you also need to trigger a RESET yourself.
ie they don't always seem to startup in boot mode from a cold power on with boot pins correct.
Also, you mention boot0, have you got boot1 set correctly too?