Sounds like far too much sugar and not enough protein.
Carbs and sugar aren't filling and burn quickly so he'll be hungry much more quickly if he's not getting enough protein. So while there is a place for cereal if he wants it try adding at least one protein to each meal, and give less sugary snacks. So e.g.
Breakfast: bowl of porridge as this is slow-burning, if he won't eat that how about eggs, boiled with soldiers, or poached or scrambled with toast. Does he still drink milk? A glass/cup of milk with breakfast will also add to his protein intake...
Snacks piece of fruit/biscuit/cheese cubes, mine loved cubes of cheese with a bowl of grapes as a snack at that age.
Lunch let him have his sandwich - what do you put on it?
And normal dinner with a small snack in between.
Also, will he drink a cup of milk before bed or perhaps have a piece of toast or a biscuit before bedtime so he's not waking up hungry?
And I'd push forward bedtime to 7:30 at the latest. He'll presumably be starting school in September, and if he's used to sleeping until 9:30 he'll really struggle with getting up and tiredness if he's allowed to stay up until 8:30 in the evening.
Also:
"I'm not sure why he has an obsession with sandwiches I could try switching it round I guess but you can't really have lunch for breakfast can you?" I love a good bacon sandwich for breakfast, me, doesn't everyone?
if he wants a sandwich let him have a sandwich. As long as it isn't crisps chocolate and cake does it really matter?
Oh and if you're worried about cost wait until he's a teenager.
mine is thirteen now.... :D