There are endless ways you can challange yourself if you're bored, but most them involve restarting your game (which is what I often do). Use slow Pokemon if you want to challange yourself with the basic in-game AI (a team consisting of things like Magcargo, Crawdaunt, Parasect, Shuckle, etc.). Slow Pokemon usually have no power to back up their awful Speed (there are exceptions, like Slowking, and even Shuckle to an extent), so it provides a decent challange. Also, try using the overall weaker early-game Pokemon. See how far you can get with Pokemon like Taillow, Nincada, Whismur, etc. that have such lame movesets that it'll get you to really be creative in how you train them. Also, don't evolve your Pokemon; just use their base forms. In most cases, this may even help you; for example, if you start the game with a Mudkip and decide not to evolve it, you have the benefit of learning Hydro Pump, while its evolutions cannot.
If that's not enough, then find people you can have competitive battles with, since that is where the real challange often lies with Pokemon. Breeding is another fun thing to try and accomplish, especially when you can give your new Pokemon interesting and rare movesets, a better IV, good EV spreads, and all sorts of other stuff. It all just depends on what you want to do, and how you want to challange yourself after you've beaten the game a few times.