Hi,
did you actually try and remove a test image as the user? If the user has Datastore.Allocate
permissions for the storage, they can remove all volumes on the storage (even if a VM with the volume exists), otherwise the back-end will complain.
I suspect this is a GUI "bug" only: because the user can't see that the VM exists, the GUI doesn't complain about the existing VM. But to "solve" it, you would leak the information that a VM with that ID exists to the user.