This is how i do it.
Method 1- The Throw-something-together-method.
1: Before you actually have the game planned out even in your head; Start working on an engine.
2: Create the graphics for every new object as soon as you add them.
3: Come up with new ideas along the way. This will probably result in many situations where you have to remake parts of the code, use ugly workarounds and use the debugger a lot.
4: Now your code is probably very messed up, your game is full of bugs, and you don't reall know yet what you want the game to end up like. You now have three ways to go.
4-1: Abandon your game.
4-2: Iron out the worst bugs, make a coupple of levels, and post the result as "Something i threw together in a few hours" in the Your Creations part of the forum.
4-3: Take all the ideas you had, and write them down as part 1 and 2 of the Big-project method. You might want to keep some parts of the code too, but don't copy them! rewrite everything from the beginning, if you don't know exactly what everything does. Ther's a big risk if you copy the code that it will still be as messy and hard to understand as your first attempt.
Method 2- The big-project method.
1: Come up with a good game idea.
2: Write down all the plans for the game. What every enemy should do, what the character will be able to do, the story, etc. THIS IS IMPORTANT TO DO!
3: Start working with the code. Begin with the hardest parts, and work your way town to the easiest parts. It's allso good to start with the movement and abilitys for the main character so that you can test your game easily.
4: If you feel like it, start working on the important parts of the artwork, but continue working on the code.
5: As soon as the engine is playable, start with the level design. Many games come this far, but people tend to give up as soon as the engine is finnished. Many people like to build levels, so a good tip is to ask for help with this step to stop you from abandoning your game.
6: You will probably be working on the artwork and leveldesign at the same time since you will be adding new things to your new levels. In the end of the game you will probably be working on both graphics, levels and code at the same time.
7: Finnish the game. THIS IS ALSO IMPORTANT!