There's not a git hook for this.
You could write a shell script to replace push that checks for local modifications and refuses to push if they exist, and then tell your team to use that. You could even go so far as to rename git-push
so they don't call it by accident.
I agree with @Clint's comment though, generally you should solve issues like that with policy and training. Continuous integration will also help. People who are sloppy with commits will always find a way to be sloppy, and accidents will always happen.
The man page for git-status
says:
If there is no path that is different between the index file and the current HEAD commit (i.e., there is nothing to commit by running git commit), the command exits with non-zero status.