Regarding the question of how to check whether $|v|<g$ (which I would recommend to split into $v(x)<g(x)$ and $v(x)>-g(x)$, since $|v|$ will in general not be a piecewise polynomial), this is rather easy for piecewise constant functions and piecewise linear functions (for which the maximum and minimum are always attained in the nodes) since there it suffices to compare the coefficients of the corresponding vectors. For higher-order approximations, this is no longer true. (I'm assuming that $g$ is also a finite element function of the same order, otherwise you'll have the same problem as for higher-order approximations.)
But it's not the "almost everywhere" that's the problem (since finite element functions are always continuous on each element), but the fact that you need to separate integrals over each element $T$ into contributions from $T\cap A$ and $T\setminus A$ to assemble the term arising from the nonlinearity.
The easiest approach is to work with piecewise constant approximations to $v$, since then either $T\cap A= T$ or $T\cap A=\emptyset$.
For higher-order approximations, you can approximate the integrals by either
applying the nonlinearity componentwise to the vector of expansion coefficients with respect to the (nodal) basis and multiply this by the (lumped) mass or stiffness matrix (depending on where exactly this term arises, which you haven't told us) or
using a quadrature scheme to evaluate the nonlinearity.
How to do that in FEniCS is off-topic here (but for 2., look at the quadrature
element together with UFL conditional
s); the error arising from this approximation can be estimated using Strang's Lemma.
EDIT:
I see you've already posted your question there, but this older question might be more what you are looking for.