Hi Arthur,
This type of project can be a lot of fun, and kudos to you for wanting to try it out. I would warn you, though, that it can get very frustrating if you just push at it aimlessly.
There are already several good answers posted before me, and I'd like to expand on them, as well as offer my own advice.
As has been mentioned, you're going to want to plan out your game before starting to program it. Some advice on this:
- Pick one simple idea to build around
- Decide on a small set of "shiny" features
- Don't worry about "How" it will work yet, just "What" you want to do
Make sure the project is something you feel like you can stick with, regardless of roadblocks you might encounter. Programming can get frustrating, especially when complex issues arise. If you have the drive to push through, you'll enjoy the end result even more.
With a clear direction, you will have a better idea of what you already know how to do, and what you need to learn how to do.
Another piece of advice given already was to look at the following question: http://stackoverflow.com/questions/174830/learning-game-programming
The accepted answer runs through the different parts of a game engine. You won't necessarily want to build the engine yourself, but if you do, it's a good guideline to the bare minimum of work that needs to be done to build one.
However, there are other options out there. Free and open-source engines are available to use for your project. OGRE has already been mentioned, and it's one that I've heard good things about from amateur designers trying to build their own games. One that I've recently had a chance to look through the code for is Valve's Source Engine, which would be a good choice if the game you want to design could be done as a "Mod" for the Half-Life series of games (which can still be fun). Another way to use these engines is to use them as learning references to see how others have implemented basic (and not-so-basic) engine features.
You can see why, with so many options, it's good to first decide what you're doing so you can make good choices for your tools and other options.
You talk a bit about language in your question, so let's talk about that next. My background is in C++, so it's an easy choice for me what language to use. However, using C# and the XNA Framework is a good place to start if you want an alternative. Even if you're not sold on XNA, you can still use C# and learn DirectX (Basic DirectX Tutorials: ZophusX).
EDIT: IT seems ZophusX no longer has anything on C#, but the DirectX Tutorials are still to notch (though basic)
Finally, if you come to a point where the project is not enjoyable, take a break. Maybe discuss it with someone, or return to your design and make some tweaks. It's a personal project, so you're under no deadlines beyond what you apply to yourself. I believe wholeheartedly that this type of project is a great way to learn or improve programming skills, and makes for an enjoyable experience.