I've just started on this very voyage myself so can hopefully provide a little bit of input. I'm currently writing a simple game for android, which will be my first published game on any platform, and am doing everything myself. That is coding, artwork & music (though have used some useful free sound libraries for SFX, try soundjay and freesound).
I started about 3 months ago with only a limited knowledge of Java specifically, but a functional knowledge of general programming concepts. From there it probably took about 3 weeks to learn enough Java to get a functional prototype, a further 2 to learn enough android to port it and since then it has all been about making it look and sound like an actual videogame.
As others have said on this thread, when working on your own, adding the polish is the hardest bit. I've spent a good few days just on my background image and I have very little in the way of animation! (That could be because I'm a better coder than I am illustrator though). I hope to be finished within the month.
I'm also going to directly quote this because I think it is the most relevant point of the thread.
Please try not to look at SEQUELS to popular games when starting out. Like Bloons TD 5. Go have a look at Bloons Tower Defense (the original) and the second version. If you go look at versions 1 and 2 ... (and then any after 2) you can see how that the key to getting this thing done (which was done by 1-2 people originally, plus 0-2 people doing art and sound stuff) was that they did a SMALL, but complete game.
Don't overstretch yourself, and set small manageable goals. If you want to make a tower defense game, build something simple and functional with just one tower to start. Code it in such a way that you can extend it easily. The worst thing I've found about working solo is the shear length of the todo list. So take pride in each time you get a new tower to fire at the enemy, and if you get something new that works well stop and play it for 15mins or so and be happy you got that far.