If he is verbal, I would insist that he use his words before you give him what he wants. If he's not verbal, put pictures of things he commonly wants into a book - you might even do this is he is verbal just to help him. Hold his arms down by his side, ensure that he is looking at you and tell him you cannot help him until he uses his words or his book. If he chooses the book, don't just say "Okay, you want a cup of milk" - ask him "Do you want this? What is it?" Give him an opportunity to use language, and quickly help him if he still cannot do it for whatever reason - but always give him that option.
If he's throwing things, take them away, and don't give them back until the following day. Toys are to be played with appropriately or they are lost. If he is beating his head on things, IGNORE HIM. Even if it looks like he is going to knock himself out. If you give it even one glance, he'll continue because he'll know he is getting your attention. The only attention he gets when he acts this way is you giving him the option to use words or communicate with the help of his book.
Some ideas for the book are the cover a Cheerios box, a juice label or a picture of a bottle of juice or his favorite cup, a diaper, a picture of your yard or the park, TV, a video, etc. Let him know that you are running the farm - If he requests cookies for breakfast, that is not appropriate and you always have the option of saying NO, NOT NOW, but that might be a good snack later today.
I am in my 9th year of dealing with a very difficult little boy who also went through a period where he beat his head on things and threw large objects my way. Set boundaries and never ever ever break them. I think the really smart kids are sometimes the toughest!
Good luck!