I remember the jump from 1900 to 2000. It was over a summer, and I did a lot of things to get better. I'd play blitz chess or hit a tournament over the weekend, and during the week I'd piece together the games that gave me trouble.
I also think studying openings is the least productive of the three ways. It doesn't give you enough back, because you will eventually hit a hole in your opening repertoire and you won't know why. I also ran into a problem of "this has to be right, I have a slight edge, how can I expect to do better?"
Though I think falling on your face in the opening against other players helps: you need to learn to fight from behind, and I found that when I memorized stuff, I wound up saying "But I SHOULD be winning" instead of focusing on taking chances. And you'll know what you need to work at, or against. It's trial by experiment and experience, instead of reading theoretically critical lines you may not understand yet.
One big thing I wished I'd realized was understanding how many errors 2000+ players can make. Computers bear this out, and if you understand they make mistakes, you won't feel you have to understand things perfectly. Have your computer analyze your best and worst games. It's hard to face the mistakes you made, but on the other hand, patterns reveal blind spots. You can also just look at an old game if you only have a few minutes. GM games are great, but they can't point to your individual style. This means, of course, notate your longer games ASAP--at least the ones that can be recorded.
I agree that endgames are quite productive to study or learn. I felt guilty being able to scoop out a win in the endgame, but truth is, it's important to focus on--you can learn how a few pieces work together, which helps you learn how even more work together.
One thing I didn't have was a powerful computer to analyze what I did wrong. Even in games against people rated 400 points below me, I learned a lot. I thought I played solidly and cleverly, but I kept making mistakes that weren't obvious. In a way this is painful, but in a way it keeps you grounded. So I think the keys are
- if you play blitz, note openings that trouble you, and when, and why you're lost. Quit playing blitz if it becomes more about woodpushing and waiting for an opponent to hang a pawn than actual ideas.
- after a tourney game, write down stuff that confuses you. If an opponent suggests a longer strategic idea, ask them about it, but try it out against a strong computer when you get home. An example might be letting your opponent place a knight on e4/e5 and seeing why it can't be dislodged, or even ruining your pawn structure. Note moves you didn't have the guts to play and moves you feared. See if your fears were valid. Also pay attention to what your opponent could've done but didn't. It may reveal other weaknesses.
- play imbalanced openings when you can, if there's not a lot of risk. While it's useful to know/learn how to win a pawn up in static positions, I find chess can get stale if you go too technical too fast--and the lessons learned from dynamic positions can often include useful ones for static positions. It happened for me. You always want to question piece value and activity and make sure you are not playing by rote.
- find a chess tactics site and play at it. Especially one with comments. Why didn't move X work? Why can't I shuffle the move order? I know I tended to skate with chess puzzles saying "Oh, I made the right move, yay!" and I forgot to look into side lines, or I guessed that this tactic was right because it was a puzzle.
Cecil De Vere's comment about plateauing is one I can relate to. If you feel like you are, or you're doing everything right, but... you may be better off taking a break and maybe playing a different opening to try new stuff.
Of course, this may be moot and you may've made it by now. If so, congratulations! But if not, I hope this helps someone else.