We have had some success with redirecting and drilling practices. If George throws something, we have a little conversation like
me - do we throw books?
him - no
me - what do we throw
him - balls!
me - would you like to go outside and play with the ball, or would you like to read the book?

Sometimes we do a drill where we practice 10 times. eg he throws his plate on the floor, so I say "that's not what we do when we're ready to leave the table" then we practice saying "may I leave the table", and taking the plate over to the kitchen bench.

For serious, repetitive, dangerous etc behaviour we pretty much do what you do, although we tend to remove him rather than the food. I usually say something like "that behaviour is telling me that you've decided not to eat lunch" and take him out of the room.

To be honest, it sounds like your strategies are good, it might just take a bit longer for it to sink in. I'd continue being firm with him - you don't want him to be throwing things at his sister when she arrives - and just remember that children won't starve themselves by missing meals and not getting biscuits!