Ok, this is probably going to sound hugely critical, so I apologise now, and if you don't want to read, then skip to next post!

The problem is the salt content, mainly. Chinese food is very high in salt and probably also contains MSG. Baked beans, spa hoops, ravioli etc are very high in sugar and salt, so should only be eating very infrequently. Using pre-prepared shepherds pie will also have high salt content, far too high for a 2yo. Cheese is great, as it's got calcium in, however it too has a high salt content, so you do need to watch how much he has.
What type of cereal does he have? If it's plain weetabix (no sugar on top), shredded wheat, rice krispies etc then that's fine, but if he's having granola, cocopops, frosts etc, then they're all too sugary.
No under-7s should be drinking tea! Tea leaches the iron out of their diets, so can lead to anaemia. Tbh, a 2.5yo should not be drinking anything other than water or milk, there's just no need.
I know it's hard when they're picky, I understand. Sometimes we're just happy when they eat anything. At 2yo, my youngest was eating only plain porridge (made fresh from oats, not ready brek), bananas, plain toast.
Nothing else. At 2.5, he was just under 15kg, which was bang on for his height. Your DS is definitely taller than he was.
What will DS eat in terms of fruit and veg? What things can you guarantee will be eaten if you serve them? Start from there, and try to wean him of all the salty, sugary foods he's eating. It will be difficult as they're all so bloody tasty! But his health will benefit in the long run.