The fastest way to level up is simply to fight Pokémon that you can defeat easily, so it depends entirely on your party composition and where you are in the story. Keep in mind type advantages if you're trying to train a weak Pokémon, or, if it's a very weak Pokémon that won't be able to defeat wild Pokémon at your point in the story, you can follow two methods:
Send the weak Pokémon out first, then as soon as the fight starts, switch it out for a stronger Pokémon. This causes both Pokémon to gain half of the total experience gained.
Give the weak Pokémon the Exp. Share you receive in Rustboro City. This will cause the Pokémon to gain half of the total experience points, even if it didn't battle at all.
You can even combine these two, sending out the weak Pokémon first whilst holding the Exp. Share, before switching to a stronger Pokémon. In this case, the weak Pokémon will gain 75% of total experience gained, and the strong Pokémon will gain 25%.
If you can get past your unnatural aversion for Rare Candies, a Pokémon with Pickup will have a chance to find Rare Candies starting from level 21 at 3%, and will have a 10% chance of finding one starting from level 41. It may not sound like a lot, but it adds up if you're fighting many wild Pokémon.