There's basically no simple solution to this issue. Because the route traverses the same edge more than once, you're going to have overlap. You could add directional arrows to the lines, but then you'll still have overlap just with arrows pointing both directions.
You could do the route as separate legs to each stop and color them differently, but you'll still end up with a line on top of another line and only see the topmost color. Directional arrows in different colors, changing the width of the legs (so the bottom is widest, similar to the dual carriageways in your example image), or several other symbology tweaks could make it possible to see how the overlap is working. Of course, this involves doing three separate routes, or saving the route to a file and breaking the line apart. You could also manually draw lines somewhat parallel to each other to symbolize, but that's even a bit more work.
This issue is usually handled by the use of Directions, where in text it will list the turns, directions, and distances to travel in the correct order for the route. Having the stops symbolized with numbers as shown is also usually sufficient to determine the route, at least in smaller solutions such as this with minimal stops and backtracking.