You can use the option EdgeStyle
after removing duplicate (up to direction) edges:
g = Graph[{1 -> 2, 2 -> 1, 3 -> 1, 3 -> 2, 4 -> 1, 4 -> 2, 4 -> 4}]
Graph[DeleteDuplicates[EdgeList[g], Sort@# == Sort@#2 &],
EdgeStyle -> {e : DirectedEdge[a_, b_] /; a =!= b && MemberQ[EdgeList[g], Reverse@e] :>
Arrowheads[{-.05, .05}]}, VertexCoordinates -> GraphEmbedding[g]]