Personally I would have a friend who has a good horse ride with you, start in front during the ride and ask your friend to come up next to you and back off again. Keep repeating this and start having her ride past your horse, pass her again. If you do it for very short increments at first and work your way up to letting her horse next to and in front of yours he will start to understand that he is all right back there. This won't happen in a day. Any kind of training is going to take a lot of time and work.
Also in my opinion, your horse does not respect you as the leader. If I were you I would do a lot of ground work with him, leading, lounging, personal space work.
You should also be doing more work in the saddle. When he wants to go forward faster than you want you need to make him really work. Trot him in circles, make him back up, disengage his hind end. Have your friend wait for you while you are doing this. After time if he still gets in a hurry to be in front I would make him trot in the other direction until he was very tired.
Good luck!! And remember your not going to get this over night and if this is enough to make you want to give up I would recommend you find yourself a well finished horse that is going to help you build your confidence and patience.