If I could give my younger self advice from my current self, I would probably say the following.
- Don't make it perfect, younger me spent way too much time developing code for any possible case, which meant I got bored and gave up on some games I shouldn't have.
- During development, programmer art is more than sufficient, even many games have been released with "programmer art." Know your weakness (maybe you're a good artist and programmer so this may or may not apply). I struggle with building assets for my games, so I know that is going to take a large portion of my development time. I try to start out with basic art, and when I get stuck trying to solve a coding problem, I take a break and jump into fixing up my assets and making them a little bit better.
- Aim high but be realistic. Set a high goal, then break it down in to managable chunks and knock each one out one at a time. Don't spread yourself too thin.
- Don't be afraid to use code (ideas, concepts, etc) you found on-line. Don't suffer from not-invented-here synrdome. Its easy to want all the code in your game to be from scratch, but then you'll never finish your game. When you make a cake, you don't harvest the grain, gather the eggs, grind the flour, you buy them at the store and mix them together to make something great. Just make sure you attribute correctly.
- Take a feature driven approach. Break each bit of your design into a "feature" and build it up one feature at a time until you have something fun.
- Get something into a playable state as soon as possible, this works wonders for keeping enthused about the project.
- Get as many people playing as possible, as early into development as possible. As you continue to playtest yourself, you'll master it quickly. So your idea of "Easy, Medium, Hard" might be someone elses, "Insane, Ungodly, Unplayable." Maybe thats what you are going for, but make sure you know it up front.
- Don't worry about multiplayer on your first game(s). Its hard to do right, its even harder to do well. Make your game fun in single player first. If thats successful, either refactor that code so it can be networked, or start a new project with multiplayer in mind.
- Know that your game will not be in the same class World Of Warcraft, Elder Scrolls, Half-Life, Call Of Duty, and that is OK. There is plenty of money to be made making games in the Angry Birds, Fruit Ninja, Plants vs. Zombies class. There is equal fun in both (I presume, I've only worked on the latter type).
- If you're not enjoiny the project, take a break, but set a goal with yourself of when you are going to return, and what you're going to acomplish first upon your return to the project.
If I could pick one of those to put the most emphasis on, it would be the feature driven approach. Make each feature a managable size, and take a standard methotical approach to finishing each one. Once its finished, do not go back and re-work it unless a subsequent feature requires it.