Okay, first lets see this from the player's point of view. They download your game they install it, now they want to play it. Sometimes people will look at your help file, or training level, but chances are, they don't want to. This means level one must be designed for teaching, not challenging. (This doesn't apply to Tetris, and all the games based on Tetris.) A classic example of this can be found in Halo:

The game starts with you being thawed out of a deep freeze. Someone tells you to just move your head around to check that the suit is working the way it should.
Thus, the player learns to look.

They say you may feel strange after the whole being frozen thing, and you should walk it off.
Thus, the player learns to walk.

The game continues like this for some time, but I think you understand the pattern. Buy the game, the first level teaches you to play really well, and chances are you don't even know you're learning. It's inspirational.

So, start the game with teaching in mind. Have helpful signs and arrows where appropriate. Make sure that any unusual objects can be easily toyed with, without punishing the player with game over. It is the fear of game over that is enjoyable, not the game over itself. Make sure, that every challenge your player faces he/she at least understands the mechanics of it. (This is not common practice, especially with bosses. Though, if you code it, so that the boss starts off like a punching bag for the first hit, once it’s hit, it starts waving its arms, for example. Then when it's hit again, it tries to shoot you with fireballs, or what ever turns you on. You don't want to through the player in the deep end. People give up that way.)

You will notice I apply this concept to my game. At the time of writing, it's not on my profile, but will be shortly.