First, why is it a problem that some of the edges intersect in the plot? The plot is not ambiguous in any way, even if there are intersection between edges, the nodes are clearly marked. With a sufficiently complex graph, it's not going to be possible to plot it with some edges intersecting.
You can always experiment with the various Layout options of plot. e.g.
h = plot(G, 'Layout', 'circle')
although I've not found any default layout that doesn't have intersecting edges with your graph.
If you can work out yourself a node arrangement that doesn't lead to intersecting edges, you can always specify the position of the nodes when you call plot. Alternatively, you can let plot do its thing and manually move some nodes afterward:
h = plot(G)
h.XData([10 11]) = h.XData([7 8])
The above results in no intersection but as I've said with a sufficiently complex graph it may be impossible to plot it without intersections