First, you need to work on simple changes. Lots of them. Try to keep it interesting & new for the horse. Start out with a fairly long stretch of trotting before you ask for the new lead. This will give you plenty of time to get the new bend to ask for the canter. Gradually work the amount of trotting down to a very small amount of trotting between the old lead and the new lead. Once you've done this, then you can't start integrating asking for flying changes with simple changes and flying changes over poles.
To teach flying changes, it works best to make it as uncomfortable as possible for them to continue on the wrong lead. To do this, leg yield with your inside leg torwards the outside of the ring, but don't let the horse have an inside bend. His nose must be pointing to the outside. You should be looking and leaning to the outside. When you want to ask for the change, kick with your outside leg. If you've done it right, your horse should switch both in front and behind. The horse may throw a buck or play because its annoying to them. They were perfectly happy on the wrong lead, but you forced them to the other lead, so stay in the back seat of the saddle, and don't punish the horse for the misbehaving.
If you aren't able to feel if the horse has changed only in front but not behind, you should either not be teaching the horse yourself, or you should have someone knowledgeable enough to be able to tell you when the horse is crossfiring watching you ride. When the horse has the wrong lead behind, trot a step and ask for the canter and try the change again.
You should never do too many flying changes in a row, or in the same place in the ring. The horse will start getting anxious and anticipating the change far too much.
I've been teaching my 6 year old this way, and at our show yesterday, we got all of our changes with only one buck & one cross-fire! The rest were pretty much automatic