I took a stab at this. I made it extra verbose so it's easy to follow along:
% count_occurences(+List, +DesiredElement, -NumOccurences)
count_occurences([], _, 0).
count_occurences([H|T], DesiredElement, NumOccurences) :-
H =\= DesiredElement,
count_occurences(T, DesiredElement, NumOccurences).
count_occurences([H|T], DesiredElement, NumOccurences) :-
H =:= DesiredElement,
count_occurences(T, DesiredElement, N),
NumOccurences is N + 1.
Using a conditional expression, the last 2 predicates can be combined into one:
% count_occurences(+List, +DesiredElement, -NumOccurences)
count_occurences([], _, 0).
count_occurences([H|T], DesiredElement, NumOccurences) :-
count_occurences(T, DesiredElement, N),
(H =:= DesiredElement -> /* if H is DesiredElement */
NumOccurences is N + 1; /* "then" */
NumOccurences is N /* "else" */
).