How do I detect if players have sufficient EXP levels?

You can test for player's levels using the l= or lm= arguments in the target selector.

For example, if I am looking for all players with at 5 or more levels, I would use:

/testfor @a[lm=5]

or, all players that have 3 or more levels of EXP, but equal to/less than 8:

/testfor @a[l=8,lm=3]

or, all players that have 5 or less levels:

/testfor @a[l=5]

or, exactly 8 levels:

/testfor @a[l=8,lm=8]

as 8 will be true for both lm and l but 7 will become false for lm and 9 would be false for l because a selector will only select players IF all the arguments are true.

See the wiki for more information.