I think there are a few phases to a project. And in every phase you promote differently.
You've come up with a cool idea, maybe (depending on how often you've done this before) you've set up some basic functionality as a proof of concept. But all in all you're still very much thinking about the game and all the different stuff you want it to do and how that would work.
How to promote: don't. Tell your family and friends if you want, talk about it on forums like these if you want, especially if you need help, but at this point nobody should actually be trying to play it or even looking at it.
You've got the basic ideas down and you're wokring on implementing them. This phase is usually pretty long. You're writing code, creating assets, all that.
What you need to think about here are features and versions.
What features will your game have? Which ones will you need to do first (can't work on enemy pathing AI if there aren't players or obstacles or enemies yet), and so on. Ideally, you need a list of which features go together to make something that "works". Doesn't have to be finished, just working and doing something probably unimpressive like showing the player walking around. Take that list of features. When that's done, that's v0.1. Then make a list of features that will be the next "done/working" thing, that's v0.2. Try to think 2 or 3 versions ahead. It's perfectly fine to end up at v0.76 before you release, the number police isn't going to bust you for it.
Any time where you up the version number is a time where you can consider starting your marketing. v0.1 probably isn't that time, but v0.4 might be.
During this phase, you should have a decent and developing idea of what your game is about. You need to work on some non-coding things:
* Elevator pitch. If people ask you what you're doing, you need to be able to explain what your game is in 30 seconds or less. Without words like "sort of, kind of," or "like WoW but different". It only needs to state the important things, like "My game is a space MMO where everything is player-driven. The economy, the building of ships and spacestations, owning star systems or going pirate in the far reaches of space is all possible, but you'll need allies. And money. Lots of money. You can even pay for your subscription if you make enough in-game money." That's EVE online. Don't get into the tiny details. At this point I don't care that various systems have various levels of security, or that you can choose from a number of different races. Just the basics and some stuff that makes it different from other games.
This is what you'd put as the account info for your game's Twitter account, for example.
* Some art. Even if you're still working with placeholder images in your actual code, make at least: a user image you can use, and some basic splash images. You know those mobile games that show stuff in the trailer that's not really in the game, because the game looks pretty disappointing if they'd just show ingame footage alone so some concept artist came up with a cool artist's impression? You need something like that to make people look.
*A decentlooking website. Design matters.
*If you want a patreon or some other money-making scheme, here's where you set it up. Except for kickstarter, do that when you have something to show to people.
How to promote: You've got the elevator pitch, some art, maybe some screenshots. You can start talking about this on social media now. Maybe even make an account just for your game (instead of you personally), but don't expect anyone to follow it just yet. At this point you're just talking, "Just implemented AI pathing in *game name!* Works better than I thought, enemies are navigating complex mazes! #gamedev #yourgame" Set up the website where people can find it if they google your game, but don't host the game on it yet. Alpha version coming soon.
A couple of versions in you should have a decent working thing that demonstrates some of the key features in your game. It's not polished and it's far from finished, but it's something you can show to people.
Now you can start actually promoting. At this point you need to decide what you actually want. Do you want a kickstarter? Do you want to release this as one finished thing like "BAM LOOK AT THIS GLORIOUS THING!" or do you want people along for the ride since alpha, like minecraft of dwarf frotress?
How to promote: Blast it on social media. Spam about it on the forums for every site you can think of. PRobably best to phrase it like "I would like some feedback so I can take the opinions of the community into account during development", and not "check out this awesome thing!" because it is an alpha, it is not awesome yet.
Your social media should all link to your website, preferably with each post. Every time you update or something significant happens (100 followers, one week since alpha release, etc.) you post about it on the website. It's important that your game seems alive. Reply to people on social media. Don't feed trolls.
Now your game should be almost ready for a release. Like if v1.0 is the finished game, you're at v0.8 now. Maybe the previous thing worked and you have followers. Maybe you have that kickstarter cash. Beta is a good time to actually make the game available to people, making sure they know it is a beta. You could think about steam greenlight at this point, for example. Put it on the app store. Put it on Kongregate, try and see if you can get it on Facebook, that sort of thing.
How to promote: Send it out. Send it to reviewers, even/especially the big names. Spam it on every single gaming or gamedev related subreddit or forum you can think of. Send it to other devs with a bigger following. Send it to freaking Notch. Ask them what they think, whether they like it and if they do, could they post something about it and help you out (they were once just starting out, just like you)? Even if they don't want to promote it, they might say something like "It's looking pretty good, lots of promise!", ask them if you can put that quote on your website. Don't be afraid to actually start a conversation instead of writing one formal letter and one formal thankyou. Send it to your local newspaper ("local man makes indie game"), pay for google ads, pay for facebook ads, do whatever you can to make your shit show up at the top of the list EVERYWHERE. Many of these things won't generate a damn thing, but it doesn't matter.
When people actually start playing it, keep a close eye on their reactions. They don't like it? Don't blast them, figure out what went wrong. They like it? Share it. They find something hilarious (even if it is a bug), share it! Funny is better than positive. Someone writes a review, share it, put it on your website. Someone makes fanart, share it!
Same thing as beta, actually. Contact all those people you contacted again, even if they didn't reply or like it the first time.
Now you want to make sure people know what's in the future. Which features are still on your list? How often do you plan to update? Adress concerns from the community, put their input on your future feature list. Kerbal Space Program is a very good example here.
Anyway, long story and I'm sure I missed a lot. But it should give you some pointers at least!