Hi L.,
Remember that kids understand a lot more than we realize. Persistence and consistency are key. Each time your son does something that is unacceptable (and I mean each and every time) calmly but firmly let him know that his behavior is unacceptable. For example, if he goes to grab glasses (my son did this all the time), grab his hand and move it away from the glasses while saying in a firm voice, "[his name] we do not grab glasses, would you like to play with xyz instead" and hand him something else (it's good to have a toy in your pocket). Soon he will be entering the testing phase, where he is totally aware of what he is supposed to do and not do and when he enters that phase, you may want to try the count to 3 approach (it's worked for us so far). If our son is doing something he is not supposed to do, we say, "Kieran, do not bang the door" If he doesn't immediately stop, then we say, "You're not listening to Mommy/Daddy, if you don't stop banging the door, we're going to take away xyz (if he has a toy in his hand), or you're going have a timeout. Do you understand? 1...2...3 and then immediately without hesitation the punishment that we said we would do, we do." We do these things by getting down to his level and requiring him to look us in the eye.
Our son is now almost 2, but we started this around your son's age. It takes time and patience and a lot of repeating, but it will eventually stick. Now, I usually don't even get to 2 before he stops his behavior.
I read something on Mamapedia once that really stuck with me: The lazy parent is the one who spends all their time picking up after the kids. It's harder to take the time to teach your kids the correct behavior than to just do it for them. I have remembered this every time I have wanted to just 'throw in the towel' so to speak. The effort, time, perserverence and consistency we put in now will reap rewards we cannot imagine in the future. So whether it be teaching them pick up their own toys, or not throw food - firm, loving consistency is what is needed.
p.s., I am glad you have chosen to not go the spanking route. It has been proven over and over that it is not the best method nor even needed to discipline children (it seems like an easy way, but it ends up making things worse). Thinking about it logically, how can we teach a child to not hit by hitting them?