A regular player base is everything. Having hosted a Gmod server for a while, I can tell you that once my regulars stopped popping in as often, it went entirely downhill. Idling in your server helps a lot but if you’re not capable of that due to outside obligations, see if you can’t entice some close (responsible!) friends to be admins to keep the player count up. Having a community is huge, but something as simple as a Steam group will do, you don’t need to set up a whole set of forums for your server (in fact, you don’t have to at all, since Steam will do that for you in your group).
A lot of people talk about the content of the server itself as if it’s important, but I think that’s entirely missing the point. Unless you create a significant amount of content that will attract players (the hit new thing I see a ton of people playing all of the time is survival-y stuff like CyberGmod’s DayZ gamemode and that weird city wars server that’s almost not quite RP), most people get accustomed to seeing the same sort of content that most other servers have and ignore the rest. This is especially true for stuff like custom HUDs. No one cares about that.
Make your server convenient. Players are dumb and will eventually leave when they can’t participate in something because of a slew of model errors (m9k, looking at you). http://wiki.garrysmod.com/page/resource/AddWorkshop <- This is an important thing. Make a file containing a bunch of resource.AddWorkshop statements that look like this:
[lua]resource.AddWorkshop( someid )
resource.AddWorkshop( anotherid )[/lua]
Replace someid and anotherid with the IDs of the workshop addons that you’re using. For example, the ID of this addon: http://steamcommunity.com/sharedfiles/filedetails/?id=280655383 is the very end of the URL, 280655383. Keep doing this for big addons that would take to long to download on their own (wiremod, for example). It’s much faster, saves your server bandwidth (and resources!) and lets all players see the same content, even if they’re not actually subscribed to the addon.
This is a rather long winded post (mostly because I want to start a successful server myself so I’ve been trying to divine the reason why some servers get tons of players but other cool ones completely miss out), but really it just boils down to patience and encouraging new players to pop in and try out your server, letting them feel welcome and accepting them into a community where they can meet other people who like your server just as much as they do.