I always ask myself the same question and there are a couple of things you can do to motivate yourself (a lot of them already posted here). What works well for me is something I heard at one of the Indie Talks at this year's GDC, I think it was the guy making the Monaco game :-)
First, find a project that's well in your line of experience. I.e. don't start out to make a FPS if you don't even know the basics of OpenGL/DirectX. (unless you're using a game engine but that's not the point here ;-))
Then, make yourself a list of things to do and milestones you like to achieve, so you always know where to go. The TODOs is the important part. Define your tasks such that each task can easily be done on a day or in a couple of hours. So when you start out coding, designing, modeling etc. you already see the light at the end of the tunnel. Nothing is more depressing than designing and coding your big Game Engine for a month without getting nearer to the finishing line. Break down big tasks into smaller ones. Finishing a task quickly is really rewarding and keeps you going. For example, this was my task list for a small space shooter game at one time :
- Sound Effects
- Music
- Remodel Ship
- Remodel Rockets
- Colission Detection between shots and player/enemy
- Make enemies shoot
- Title Screen
- Score/Lives/Energy Whatever Overlay
All these tasks were easy to do and once they work in the game, you can iterate on those areas and polish them.
And hey, I finished a small game. It's not pretty but it's basically done which was really rewarding in the end :-)