- No Repels
- Don't run from wild Pokemon
- Don't skip trainers
- Don't skip side areas, since that usually means you're skipping trainers or wild Pokemon and even items
- When you get a new party member, catch them up to your other Pokemon's levels completely before progressing (that obviously takes grinding but it's not too bad)
My sentiments, exactly.
If you purposely run through every patch of grass, battle every single wild Pokemon, battle every Trainer and explore every out-of-the-way location on your journey, then you'll definitely be beefed up by the time you face the Elite 4.
I fondly remember starting my newest file in FireRed and getting a Venusaur to Lv.42 by the time I fought Lt.Surge, and then proceeding to gather the rest of my team and bring them up to speed.
Really, the only potential draw back is that if your desired team consists of your starter and five Pokemon that are unobtainable until much later on, your starter will severely out-level your other party members and be doomed to remain idle while you play catch-up. A simple remedy, however, is to have Pokemon ready to trade at their lowest stage and level and add them progressively as you go. This does two things for you: Makes them gain an insane amount of experience thanks to trading and their low level (In B/W) and also allows you to build your team at your own pace without having to overlevel a single member on your way to gather the rest.