The thing is though, you are intentionally using enough force to leave these marks, on more than one occasion, so it’s not a “one off” or an accident. Also, of course they are being delivered out of anger/discipline, you’re getting annoyed that he will not continue to walk, therefore you are using excessive force to physically make him move. You can dress that up in your mind however you want, but the reality is you are choosing to use physical force, force capable of leaving long lasting physical marks, to make your child do something.
To get past this I think you really need to take quite a few steps back. You’ve mentioned that you’ve noticed things which trigger this behaviour, have a think about what kind of emotions those situations evoke in him, think about if are you handling them correctly, if you aren’t, have a think about how you could handle them better? For example when his balloon popped and he is angry/upset, what did you say to him? How did you act? How did he act? Did you stop and speak to him, explain, reassure… or did you insist on walking that minute thus him kicking off and refusing? Could it have gone differently if you had acted differently, could you have made a different choice?
You absolutely must stay calm in those situations. At the moment, what you are teaching him is that if someone doesn’t listen to us them it is okay to physically force them to do what we say. Is that the kind of message you’d like to teach your son? Is that the kind of man you’d like him to grow up to be? I’d hope not. So start now to model better behaviour. Stay calm, and give him choices. For example, we have to go home, if you don’t want to walk now then we can sit here and chat for 5 minutes, but after that we have to go, so do you want to leave now or in 5 mins? OR as another poster has suggested a buggy board, make that one of the choices- you can either walk home now OR you can hop onto the buggy board, which would you like? Some children especially when overwhelmed with big emotions (like the anger and upset at a burst balloon) work a lot better when they feel they have choices, so give him choices, and when he makes one really reinforce that positive behaviour, lots of praise, lots of reassurance. Reward that.
Distract your child, redirect their attention to something else to get past a situation. So if you can see he is about to refuse to walk, mention something else, something happening later that day maybe, engage in conversation, redirect the energy to something else rather than you doubling down on “we have to move NOW” because all that does is wind him up even further.
Lastly and most importantly though, stop using physical force. Unless he has stopped walking in the middle of a road and is in immediate danger for example, stop laying hands on him. If he really will not walk and none of the above work, don’t shout, don’t argue back, don’t engage in a back and forth which only winds you both up, just stand completely still, or sit with him. For as long as it takes. Let him calm down and maybe when he has he will be able to verbalise to you how he is feeling. Kids that age have lots of very big feelings and they’re learning from you how to deal with them, so stop teaching him that violence and physical force is the answer and start teaching him that calm, patience and communication can get you through most anything.