There is no way to fully achieve what you are asking for, and there should not be. A stored procedure that an administrator cannot force to halt and rollback would be contrary to the concept of what an administrator should be able to do and could cause many problems in practice.
As Martin described, you could make it slightly harder to cancel by causing it to spawn an external process that is then independent of that administrator's connection, but it could still be terminated, it would just require additional steps. Also, forcing it to spawn another process could cause problems of its own, such as making it difficult to receive any data that was reutred by the procedure.
Also, there is no real way to keep someone who is logging in with an admin account from something other than SSMS from running a stored procedure, and there shouldn't be. Command Line Alternatives such as OSQL from MS were meant to be able to fully control SQL Server without resorting to any GUI. As Shark pointed out, you could try to grant execute only to a specific user and only log in from that user account. But an admin could run it without being specifically granted permissions. Even if you tried to DENY execute to an admin, they could just remove that denial. You could if you really wanted to query the application name in your procedure using the
APP_NAME() function and then raise an error if it was not 'Microsoft SQL Server Management Studio' but an Admin could get around even that if they wanted to (spoofing the app name, or even altering the procedure to disable that part before they ran the rest of it).
Incidentally, http://www.codeproject.com/Articles/80903/Restricting-Access-to-Database-by-Application-Name talks a bit more about restricting access to a database based on app name, but an administrator could get aroundt hat easily.
The bottom line is that if dealing with a limited user, you can exercise a fair bit of control and stringently limit them in what they can do. When talking about an admin, you cannot and should not be able to limit them overly much. If you feel you need to limit an admin, then this person should not be an admin.