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.