AppearanceElements is indeed what you need:
Manipulate[x, {x, 0, 0.5,
AppearanceElements -> {"InputField", "StepLeftButton",
"PlayPauseButton", "StepRightButton"}}]
Produces:
--> 
Your problem was probably that you specified AppearanceElements for the Manipulate itself rather than the Manipulator for x (which is specified by {x,...}
Update
Since the goal is to remove the slider and only leave the buttons and text box, it gets a little more complicated:
sliderLess[o : OptionsPattern[Animator]] := iSliderLess[o][##] &;
iSliderLess[o___][x_, y___] :=
Row[{InputField[x, Number, FieldSize -> {4, 1}], Spacer[3],
Animator[x, y, o,
AppearanceElements -> {"StepLeftButton", "PlayPauseButton",
"StepRightButton"}, AnimationRunning -> False]}]
The idea is to take an Animator and remove everything we don't want and add a InputField in front of it.
This can be used as standalone control:
sliderLess[][Dynamic[x]]
produces:

Or inside Manipulate:
Manipulate[x, {{x, 0.5}, 0, 2, sliderLess[AnimationRunning -> True]}]
As you can see, you can supply options to the Animator part of the control (everything but the textbox) and variable ranges are also supported (again, only for the animator).