Thank you for the hint, i want to add some detail of my implementation (my project is based on the ramdisk example):
I previously unregistered this service with
_usb_device_unregister_service(handle, USB_SERVICE_SLEEP);
then registered it to my callback routine with
_usb_device_register_service(handle, USB_SERVICE_SLEEP, USB_Sleep_Callback, (void *) 0);
Using a global variable which tracks the correct enumeration of the device I can identify the SLEEP events that effectively correspond to a physical disconnection of the host PC.
Now all seems working fine.