Lots of good ideas so far.
One thing to keep in mind is a group of friends is quite different than a convention game or an AL game or even a game that meets but are acquaintances.
What's worked for my group (and I have 1 clear slow player, if I let him he would take an hour to decide on any given action):
1. We had a an intervention. We're all friends (just like the OPs group) and we just explained to the guy that we have approximately 4 hours a session and we've all budgeted for it (everyone has careers and just about everyone has families with kids). This was to make him understand why people were frustrated.
2. I'm much better about letting people know they are on deck. In addition to announcing it (X it's your turn, Y your on deck) I have a whiteboard that shows initiative. Online we also make sure turn order is displayed.
3. I made him write out his "favored" actions and keep them close. A little grade school-ish but it was merited and it helped.
4. Initially, I announced we were going to have a 10 second timer - at MY discretion, If I get to 0 you take the dodge action. This is drastic, but things were getting REALLY bad. It became unnecessary once 2 and 3 clicked better.
That's what worked for our group.