Prevent SysAdmin from doing a Database Restore
First, you can't prevent a sysadmin from doing anything. :-) Any login that is a member of the sysadmin fixed server role operates outside the permissions system - they can do anything.

My first thought was to use a DDL trigger to stop the restore. Unfortunately, restoring a database is an operation that does not cause any triggers to fire (see this Connect item).

My next idea is to either have an alert on the restore event or have some job periodically looking at the msdb.dbo.restorehistory table so you can at least catch the restores quickly and work to fix them. Not ideal, I know.