When a user is a "User" and not an "Admin", he can't delete a contact. That's fine. Is it possible that he can't delete an opportunity? We don't have that level of granularity in permissions.
The usercase is: when a salesperson loses too many opportunities, he deletes them instead of indicating them as lost.