Test for a player using a command
Gamemode can be reset by
/gamemode 0 @a[m=1]
M=0 denotes that they are in creative mode. If to want, you can add a
/tellraw @a[m=1] {"text":"","extra":[{"text":"Creative is not allowed","color":"white","italic":"true"}]}
that is powered just before the above command, to tell players to not use creative.
/scoreboard
If you are using a scoreboard (ie, to track total kills), you could use two deathCount (or whatever they are) objectives, and check both of them on a 20Hz clock to see if they are always equal.
/give is harder to track.
You could make a scoreboard objective for every item they could get, and clear items if the player doesn't have enought 'points' for that item.
/setblock is almost impossible to detect.
The only real method here is to /testforblock every block in your map, but that is mega-laggy if you have a map of reasonable size.
The best solution: Don't let anyone be an op.