One thing I've just started that has worked really well is to offer tiny portions. EG for dinner tonight, he started with 2 pieces of mushroom, 2 pieces of cauliflower, 3 carrots sticks, 3 pieces of asparagus and 3 pieces of fish - all bite sized. He was hungry so ate it all, and then I filled up his (tiny) plate again. This time with 3 of every thing. He went through about 5 plates before he started throwing things on the floor.
If I had given it all to him at once, he would have eaten the fish, the carrots and some cauliflower before getting full, and not trying the asparagus or mushrooms.
I also don't give any carbs at his main meals, just at snack time, as he was filling up with carbs and not wanting the meat of veges.
Hope that's useful to people!