I use a combination of flexing a horse and having the horse work.
I begin in a rope halter with a 14 foot lead so I have room to lunge my horse a little. I will flex my horse to the left slightly, which the horse should already know means stand. Then i'll begin. I'll get a handful of mane in my left hand will my lead rope and grab my saddle horn in the right. From there i'll lift my foot. If your horse moves, keep your horse flexed and walk with him, exaggerating lifting your left leg each step until he comes back to a stop. As soon as he does, give his head back and rub on him for a moment. You want to release the pressure when he stands. From there, you want him to consistently stand when you raise your leg. Then build to him standing when you put a foot in the stirrup, when he does, take your foot out and turn loose of his head and rub. Then build to standing halfway in the stirrup. If a horse moves at this point, you can easily twist your hips so your right hip is up against your saddle while you keep him bent, just stay up there until he stands, then dismount and rub. Repeat until he stands.
Some horses need more than the positive rub when they do the correct thing. On these horses i'll send them out really firmly on the lunge and do just a few circles, asking for a rollback every 3/4 of a lap or so. Then i'll ask my horse to stand and just rub on them. This will allow the horse to make that choice to move, and then you make it difficult. You are NOT trying to tire your horse out. You just want to ask for a few circles that are harder work.
Once you're actually mounted, do as you have been doing, stand and chill out for a minute before walking off.
Over the course of a few rides, you can go from mounting your horse with his head flexed to gradually mounting with it straight. You just want to start off flexed, so if he does move, it's on a controlled circle.