First, level design.
Your levels need to be fun, interesting enough to explore, and never feel aimless or unfinished.
and of course gameplay/play control.
under almost no circumstances should the buttons ever significantly change their effect.
for example, in Sonic Rush Adventure, the B Button is jump when you're on the ground, but when you're sliding down a rail, it acts as a Trick Button, which has caused me to !@#$% up and miss many jumps- very stupid idea.
You want the jump button to always make the character jump unless he is under extreme circumstances where one can't jump, the same for all other buttons really.
And you want to make these buttons combinable, such as crouching+attacking, running+jumping, arrow keys+attack etc, so that people can develop their own style of play because the gameplay you offer is so versatile.
think of stuff like running and crouch-sliding under bricks in super mario bros, the trick system in Sonic Advance 2, or the 2 types of jumping in Super Mario World