you can create a SQL job or a stored procedure with Execute As Owner.
the SQL job or procedure would contain the restore command in it,and you grant the limited end user EXECUTE ON MyRestoreProc, or on a different proc which starts the job via sp_start_job;
so the end user does not have db_owner or sysadmin rights, for example, but can restore due to the proc.
the procedure most likely has to exist in another database(ie master) so that it can disconnect users and restore the target database.
Lowell