MySQL Setting Account Resource Limits
Starting from MySQL 4.0.2, you can limit access to the following server resources for individual accounts:
The number of queries that an account can issue per hour
The number of updates that an account can issue per hour
The number of times an account can connect to the server per hour
Additional Info -
MySQL does not have a query timeout value, or any other built-in way to throttle an individual query. However, it is pretty trivial to write a script that will kill long-running queries. You could even capture the user and query so that you can beat the offending user/programmer later.
Here is an example of one using PERL.
Edit to address aditional info
Depending on the queries your app makes, even a single click can put down the whole site. Although, voting can be implemented in a very lightweight way, so even if you have 1000 users giving repeated clicks to have the site responsive.
You could also limit the DB hits at application level - for example by holding in a session variable the id of the photos the user already voted on - check that variable before hitting the DB and you should be ok