So you can do this if your deployment mechanism is integrated with the deployment-framework-plugin API - or if your deployment mechanism is integrated with the credentials plugin.
Basically you rely on the credentials to deploy being in the *User*'s credentials store and not in the SYSTEM credentials store.
Then either the deployment framework aware plugin - or a regular job with a credentials parameter - will force the user triggering the job to select the credentials... obviously only those users that have valid credentials will be able to select them... and hence only they may deploy.
It is a tad "fun" to set up, but it works once you get it right