This is a variation on David's answer.
o = {0, 0, 0};
Clear[axis];
axis[p_, label_] := {Arrowheads[0.025], Arrow[{o, p}], Text[label, p]}
Clear[axes];
axes[labels_List, labelSize_, labelColor_] :=
MapThread[axis, {IdentityMatrix[3], Style[#, labelSize, labelColor, Bold] & /@ labels}]
ct = 1. {0, 3, 3};
pt = {-0.5, -4, 2};
Graphics3D[{
axes[{"\!\(\*StyleBox[\"Z\",\nFontSlant->\"Italic\"]\)", "\!\(\*StyleBox[\"X\",\nFontSlant->\"Italic\"]\)", "\!\(\*StyleBox[\"Y\",\nFontSlant->\"Italic\"]\)"}, 17, Blend[{Orange, Yellow}]],
Translate[Rotate[axes[{"\!\(\*StyleBox[\"z\",\nFontSlant->\"Italic\"]\)", "\!\(\*StyleBox[\"x\",\nFontSlant->\"Italic\"]\)", "\!\(\*StyleBox[\"y\",\nFontSlant->\"Italic\"]\)"}, 17, Darker@Blue], -35 Degree, {1, 1, 0}], ct],
Arrowheads[0.015], Darker@Green, Arrow[{{0, 0, 0}, ct}],
Text[Style["C(\!\(\*StyleBox[\"t\",\nFontSlant->\"Italic\"]\))", 14, Bold], Mean[{o, ct}], {-1, 1}],
Red, Arrow[{ct, pt}], Text[Style["\!\(\*SubscriptBox[\(p\), \(O\)]\)", 14, Bold], Mean[{ct, pt}], {-.5, -2}],
Arrow[{o, pt}],
Text[Style["\!\(\*SubscriptBox[StyleBox[\"p\",\nFontSlant->\"Italic\"], \(World\)]\)", 14, Bold], Mean[{o, pt}], {1, 0}],
Text[Style["\!\(\*StyleBox[\"p\",\nFontSlant->\"Italic\"]\)(\!\(\*StyleBox[\"t\",\nFontSlant->\"Italic\"]\))", 14, Bold], pt, {-.5, -1}],
Text[Style["\!\(\*StyleBox[\"O\",\nFontSlant->\"Italic\"]\)", 20, Bold, Darker@Blue], ct + .1 (pt - ct), {0, -5}]},
Boxed -> False,
ViewVertical -> {0.37, 0.1, 2.1},
ViewPoint -> {1.7, 2.5, 1.6}]

The StyleBoxes appeared only because I formatted the fonts with italic and subscripts. The code looks cleaner in my notebook!
To choose values for the ViewVertical and ViewPoint options, I evaluated the expressions, then rotated the graphic to what I thought looked good, then evaluated FullOptions[] on the graphic, using values close what that output gave. Further refinement would involve tuning the angles and positions of the axes labels.
Translate[]andRotate[]ought to do the trick... – J. M.♦ Feb 2 '12 at 16:08