While I'm busy, and he's still waiting, I'd say,
"Sorry to keep you waiting."
When I'm ready to turn my attention to him, I'd say,
"I'm sorry I kept you waiting."
"I'm sorry to have kept you waiting" is perfectly good English, but it's very formal, and I'd not be comfortable saying that.
In general, I think Canadians and especially Americans are more inclined to use casual, informal, colloquial expressions than British speakers of English.
I hope this is clear, and I hope I didn't keep you waiting.
- For Teachers