It's like a dream to me that one day i will think up a really useful program that i need and code it brilliantly in the purest of pure Object Oriented C++. My killer app will (according to my dream) be as popular as the first bit torrent client or a kick ass program like rythmnbox !
It was actually a Star Wars reference. But what I meant was, rather than wishing for it to happen, go make it happen. Maybe you aren't good enough at programming right now to make it, but you can brainstorm. When you figure out what it is you want to do, try to think of everything you'll need to learn how to do to make it happen (if your idea is a game, for example, you'll need to learn graphics programming, some maths and physics, and things like that). Learn that stuff, then plan your program and write it.
Well problem is even doing your method, chrisname, doesn't guarantee a great program. Look at all the lackluster games that were made by teams thinking it would be great and fell short. Same with software, things start out with a big plan and fall short. All you can do is think of the idea, program it, and then pray it will be great.
Of course, that's always a risk no matter what you do. I often end up coding myself into corners and then losing interest in a project. Most of my other projects end up with code that I'm pleased with, but then I get bored halfway through and move on to something else.