Vertex hides point where edges cross - how to move vertex?

g = Graph[{a <-> 1, a <-> 2, a <-> 3, a <-> 4, b <-> 5, b <-> 6, 
   b <-> 7, b <-> 8, c <-> 9, c <-> 10, c <-> 11, c <-> 12, d <-> 13, 
   d <-> 14, d <-> 15, d <-> 16, a <-> b, a <-> c, a <-> d, b <-> c, 
   b <-> d, c <-> d, 1 <-> i, 2 <-> j, 3 <-> k, 4 <-> l, 5 <-> m, 
   6 <-> n, 7 <-> o, 8 <-> p, 9 <-> q, 10 <-> r, 11 <-> s, 12 <-> t, 
   13 <-> u, 14 <-> v, 15 <-> w, 16 <-> x, a <-> M, b <-> M, c <-> M, 
   d <-> M}, VertexLabels -> "Name"]

Mathematica graphics

SetProperty[{g, M}, VertexCoordinates -> {2.45, 2.8}]

Mathematica graphics

Or like rasher noted you can play with GraphLayout but It's pretty ugly IMO (GraphLayout -> "DiscreteSpiralEmbedding" below):

Mathematica graphics


An alternative approach is to keep the vertex coordinates and change the edge shapes:

g1 = Graph[{a <-> 1, a <-> 2, a <-> 3, a <-> 4, b <-> 5, b <-> 6, 
    b <-> 7, b <-> 8, c <-> 9, c <-> 10, c <-> 11, c <-> 12, d <-> 13,
    d <-> 14, d <-> 15, d <-> 16, a <-> b, a <-> c, a <-> d, b <-> c,
    b <-> d, c <-> d, 1 <-> i, 2 <-> j, 3 <-> k, 4 <-> l, 5 <-> m, 
    6 <-> n, 7 <-> o, 8 <-> p, 9 <-> q, 10 <-> r, 11 <-> s, 12 <-> t, 
    13 <-> u, 14 <-> v, 15 <-> w, 16 <-> x, a <-> M, b <-> M, c <-> M,
    d <-> M}, VertexLabels -> "Name",  ImagePadding -> 10, ImageSize -> 360];

g2 = SetProperty[g1, EdgeShapeFunction -> (_ <-> M | c <-> d | b <-> a -> 
       GraphElementData[{"CurvedArc", "Curvature" -> 1/2}])];

Row[{g1, g2}]

enter image description here

Alternatively, just change the two edges or all edges:

g3 = SetProperty[g1, 
    EdgeShapeFunction -> (c <-> d | b <-> a -> {"CurvedArc",  "Curvature" -> 1/2})];
g4 = SetProperty[g1, 
   EdgeShapeFunction -> {"CurvedArc", "Curvature" -> 1/2}];
Row[{g3, g4}]

enter image description here