My daughter is the same way, and is now almost six...she still takes about an hour to finish a meal. Breakfast goes quicker, I believe, but lunch and dinner are at least an hour.
My opinion? Let them take as long as they want, because after all, it's much healthier to eat slower, and it teaches you to recognize when you are full. Granted, I homeschool, so getting done in a "time frame" isn't really an issue...but she IS capable of it, because like I said, breakfast goes quicker because she knows we have things to do.
Seriously, I wouldn't punish him! Some children just eat slow...and at least with my daughter, it has never been a behavioral thing...she just eats slow. Rests between bites. And she is a very healthy eater, because she understands TRUE portions because her body is allowed to tell her when it is full.
In older times, people sat down and took and hour or more (at least) for a meal, eating slowly and conversing. I truly think it's more healthy. My daughter understands that compared to most people she is a very slow eater, but I've never tried to make it an issue. I believe as she gets older, it will improve, because she will want to get on to other things.
If I were you, I would accept it...I have! (I know it's frustrating sometimes, when you have the dishes done except for the one little plate, fork, and cup.) :)
(and of course, if it's because of distractions, eliminate distractions. Eat at the kitchen table, and don't have a tv or toys in the kitchen.)