A better name which clarifies a bit what you want would be
occurs_in(Var, Term)
Many approaches can use the same techniques as for var_in_vars/2.
This works in any ISO conforming system. It could be quite efficient, too ; that is, being (in the best case) independent of the size of Term.
occurs_in(Var, Term) :-
\+ subsumes_term(Var, Term).
The next is good as long as you do not have any constraints:
occurs_in(Var, Term) :-
\+ unify_with_occurs_check(Var, Term).
If you insist on using contains_term/2 — (the name term_subterm/2 would be much more appropriate):
occurs_in(Var, Term) :-
once( ( contains_term(Term, Subterm), Var == Subterm ) ).
Or, to take into account Prolog superstitions:
occurs_in(Var, Term) :-
\+ \+ ( contains_term(Term, Subterm), Var == Subterm ).