This can actually be solved analytically. Consider the following. Your equation
x^y==y^x && x!=y
can actually be rewritten as
x^(1/x)==y^(1/y) && x!=y
So if we now solve equations
{x^(1/x)==t, y^(1/y)==t, x!=y}
as finding functions x(t) and y(t), we will parametrize your curve. For this let's that equation
Reduce[x^(1/x) == t && x > 0 && t > 0, x]
does have a beautiful simple solution
(t == 1 && x == 1) ||
(0 < t < 1 && x == E^-ProductLog[-Log[t]]) ||
(1 < t <= E^(1/E) && (
x == E^-ProductLog[-1, -Log[t]] ||
x == E^-ProductLog[-Log[t]]))
The same solution would go for y(t). There are two domains listed here:
0 < t < 1||1 < t <= E^(1/E)
and two functions:
E^-ProductLog[-Log[t]])||E^-ProductLog[-1, -Log[t]]
So it is obvious to avoid trivial parametric curve
x[t]==y[t]
We need to choose different functions for x(t) and y(t) in the same domain. You can see how exactly overlaps the numerical plot (green, thick) with analytic formula (red, dashed):
Show[
ParametricPlot[{
{E^-ProductLog[-Log[t]], E^-ProductLog[-1, -Log[t]]},
{E^-ProductLog[-1, -Log[t]], E^-ProductLog[-Log[t]]}},
{t, 0, E^(1/E)}, PlotRange -> {{0, 7}, {0, 7}}, PlotStyle -> Directive[Thick, Dashed, Red]],
ContourPlot[x^y == y^x, {x, 0, 10}, {y, 0, 10},
ContourStyle -> Directive[Green, Thickness[.05], Opacity[.3]]]
]
From this it is obvious to deduce the final solution:
sol[x_] := Piecewise[{
{E^-ProductLog[-1, -Log[x^(1/x)]], 0 < x < E},
{E^-ProductLog[-Log[x^(1/x)]], E < x}}];
sol[x] // TraditionalForm
Plot[sol[x], {x, 0, 7}, AspectRatio -> Automatic, PlotRange -> {0, 7}]