How to create an user with permission to do everything but drop databases? If it is easier, the user can be denied only deletion of one specific database instead of any database.
I assume by everything you mean db_owner rights.  Not Sysadmin rights.
If you can't trust them not to drop a database, they should not have access to most things you can do with Sysadmin.
What you want is described in the answer here https://dba.stackexchange.com/a/163437/21924

So in effect, you can create a user that has all the rights of db_owner except say, managing users and dropping database. But I don't think there's a way to directly deny such privileges, you have to instead add everything but them.
(See https://msdn.microsoft.com/en-GB/library/ms189121.aspx)

Above is what you asked for, the solution most often used is just give the user db_owner.  Take regular backups, with the database in full recovery.  Take T-log backups as frequently as needed for your DR solution.
In the end it doesn't matter if a stupid user deleted the database or if the server crashed. Something happened to the database and you need to restore it. Your DR solution defines how much data the business can afford to loose. As it is probably a business user who has db_owner and deleted the database.  You have done your part as a DBA (assuming your backup and restores work, you should test them regularly)