If it were me, I'd start lunch sooner. Plan on it taking an hour plus, and then let him enjoy himself. If he's sticking with the eating ( not getting up and running around), just give him time. When I was a teacher of 20-30 month old children, we allowed an hour for lunch for the kids, and usually needed the time.
Being a person who now takes care of two five year olds in the afternoons, I have the fun of seeing two very different types of eaters. One can finish a snack in twenty minutes-- the other can make it take twice as long. This second one is having a great time lingering over their food, chatting and I can see that this is a relaxing time for them.
Of course, there are times when things have to get moving. That's the day to prepare a lunch that can easily be packed up to go. At that point, I just let the kids know that they can eat until the timer goes off, then we'll pack up the rest of it and take it with us. This usually works fine.
In short--kids are often rushed through the day, on our schedule. As long as they are sitting at the table, let them take their time whenever possible. Europeans linger over meals...why can't we? :)