How can I prevent users from overwriting databases when restoring?
If what you're asking is how to prevent a login from restoring over an existing database, then take a look at this reference on BOL for RESTORE:


  Permissions
  
  If the database being restored does not exist, the user must have
  CREATE DATABASE permissions to be able to execute RESTORE. If the
   database exists, RESTORE permissions default to members of the
   sysadmin and dbcreator fixed server roles and the owner (dbo) of the
   database (for the FROM DATABASE_SNAPSHOT option, the database always
  exists). 
  
  RESTORE permissions are given to roles in which membership information
  is always readily available to the server. Because fixed database role
  membership can be checked only when the database is accessible and
  undamaged, which is not always the case when RESTORE is executed,
  members of the db_owner fixed database role do not have RESTORE
  permissions.


In your case, it sounds like the database exists and users are restoring over it.  In that case, just reiterating what permissions are required, you will need to ensure that your particular logins aren't sysadmin or dbcreator members along with the owner of the database.

What it boils down to is, if you don't want people to be able to carry out certain operations, don't give them the permissions to do such.