Solution based on graphics primitives
You might consider using this approach:
h = Graphics[Line[{{0, 1/2}, {0, -1/2}}]]; Graphics[{ {Thick, Arrow[{{.1, 0}, {.9, 0}}]}, {Red, Thick, Arrow[{{.5, 0}, {.5, -.5}, {2, -.5}, {2, -.1}}]}, Arrowheads[{{Automatic, Automatic, h}}], {Red, Thick, Arrow[{{1.1, 0}, {1.9, 0}}]}, Style[{Text["X", {0, 0}], Text["Y", {1, 0}], Text["Z", {2, 0}]}, FontFamily -> "Helvetica", FontSize -> 20] }]
that produces this:

For the curved lines you can play with:
Graphics[{Arrow[BezierCurve[{{0, 0}, {1, 1}, {2, -1}}]]}]
Solution based on Graph
This solution is a bit more convoluted than the previous, but with some tweaking it works.
h = Graphics[Line[{{0, 1/2}, {0, -1/2}}]]; vlabel[lbl_] := Graphics[Text[Style[lbl, FontFamily -> "Helvetica", FontSize -> 20], Background -> White]]; verts = {"X", "Y", "Z"}; edges = {"X" -> "Y", "Y" -> "Z", "X" -> "Z"}; vcoords = {{0, 0}, {1, 0}, {2, 0}}; eshapef = {"X" \[DirectedEdge] "Y" -> ({Thick, Black, Arrow[{{0.1, 0}, {.9, 0}}]} &), "Y" \[DirectedEdge] "Z" -> ({Thick, Red, Arrowheads[{{Automatic, Automatic, h}}], Arrow[{{1.1, 0}, {1.9, 0}}]} &), "X" \[DirectedEdge] "Z" -> ({Thick, Red, Arrow[{{0.5, 0}, {0.5, -.5}, {2, -.5}, {2, -.1}}]} &)}; Graph[{"X", "Y", "Z"}, edges,EdgeShapeFunction -> eshapef, VertexCoordinates -> vcoords, VertexLabels -> Table[i -> Placed[i, Center, vlabel], {i, verts}]]
