How about replacement rules:
HoldForm[x \[Element] (A \[Intersection]
B) \[Union] (A \[Intersection] C)] //. {HoldPattern[
x \[Element]
u_ \[Union] v_] :> (x \[Element] u) \[Or] (x \[Element] v),
HoldPattern[
x \[Element]
u_ \[Intersection] v_] :> (x \[Element] u) \[And] (x \[Element]
v)}