Level grinding in early Pokemon games is hard -- there is no easy way out. However, the steps below will help you train as efficiently as possible in HG/SS.
This answer generally assumes you've completed the game including Kanto, and you have some Pokemon from your playthrough that can be used for switch training (roughly level 55+). Before starting, do the following changes to your in-game options to make the grind faster:
- Turn off "battle scene".
- Set text speed to fast.
- When switch training, choose the "switch" battle style instead of "set". This will let you swap back to the Pokemon you're training after every KO in a trainer battle.
After you reach the "solo training" phase below, turn the battle style back to "set", so you see less dialogue boxes.
1: Get a Lucky Egg

Lucky Eggs are tricky to get in HG/SS, but necessary for anyone serious about training Pokemon beyond about level 50. They are available 5% of the time on wild Chansey, which itself only appears at a rate of 1% on Routes 13, 14 and 15. Here are ways to make the process easier:
- Chansey is one of the Pokemon that appears in daily swarms. During swarms, its encounter rate on Route 13 is boosted to 40%, so you can encounter a bunch and use Thief on them. To cycle the current swarm, change the DS clock to 23:59 and allow the time to roll over to 00:00 while in-game.
- Learn RNG manipulation and hit a seed + frame that will spit out a Chansey with Lucky Egg. If you are serious about training teams in Gen 4, you will need to learn RNG manipulation anyway.
If you're only interested in training to level 50, then Exp. Share training is a viable alternative to Lucky Egg, so you can skip this step if you want. However, you should still learn RNG manipulation if you're training teams in Gen 4.
2: Passive training

Low-level Pokemon cannot take fights on their own, so they need to be trained using teammates. At this stage, there are two reasonable approaches: a) switch training with the Lucky Egg or b) using the Exp. Share. The Lucky Egg approach is slightly faster overall, but the Exp. Share approach requires less brain power. Suggestions for who to fight:
- The PokeGear lets you rematch overworld trainers with fully evolved Pokemon at fairly high levels. This page shows all the available fights. The best one is PokeManiac Brent on Route 43 on Monday mornings, who has fully-evolved Pokemon at level 58. To activate his rematch, change the DS clock to any time between 4:00 and 9:59 on a Monday. You can repeatedly call Brent and rematch him until 9:59.
- You can rematch Gym Leaders if you call their PokeGear number at the correct time. This page explains how to get the numbers and when to call. (Like with Brent, times can be cheated by changing the DS time according to the day of the week and morning-day-night cycle.) Pick a leader whose Pokemon won't 2HKO your damage dealers while switch training. Blue offers the most experience if your team can take him; he has six Pokemon around level 70.
- The Pokemon League is a viable option if you already have high level Pokemon (i.e. level 75+) that can clear the battles efficiently. Unless your Pokemon are very high level, you'll need to use the Exp. Share instead of switch training.
Of these three options, pick the hardest that your team is capable of clearing efficiently. If you're only part way though the game, stick to PokeGear rematches (or just keep trying the fight/s you're losing). Do not train on wild Pokemon, as they award less experience than trainer Pokemon and only go up to around level 50.
3: Solo training

Once your Pokemon can hold its own in battles, you can let it solo entire fights and thus gain all the available experience. This is when the Lucky Egg truly becomes necessary to train with any efficiency. You should start solo training as soon as there are PokeGear battles your Pokemon is capable of clearing on its own. When your Pokemon is level 50+, it should consistently clear all the regular PokeGear rematches alone -- at this point, you may graduate to the Gym Leader rematches.
Offensively-inclined Pokemon have a much easier time with this, especially ones with setup moves like Swords Dance (which can be used at the start of the fight). If your Pokemon needs a boost, use X-items on it at the start of fights. When your Pokemon is around level 80+, it should be capable of beating the Pokemon League alone with reasonable efficiency, assuming it has boosts described above. If it's having trouble, go back to PokeGear fights.
If you have multiple Pokemon to train, give a second Pokemon the Exp. Share (while your main one holds Lucky Egg). This causes less experience to be handed out in total, but the difference is small enough to where switch training both Pokemon completely separately is slower.
4: Rare Candies (and other tricks)

Use your Rare Candies at level 95+, when leveling up requires the most experience (except for Pokemon in the Erratic experience group). This video shows all the locations. (There are repeatable ways to get Rare Candies, but they are inefficient.)
TobyOrNotToby's answer has an interesting trick where you can level up your Pokemon overnight using the Day-Care. Actively grinding is faster, but this may be worthwhile if you're a bit desperate. You could even combine it with ShankzEEVEE's idea to get extra Rare Candies overnight.