There are several factors that contribute to slow play...
Poor course design
Slow Players
Beginner Golfers
Difficult Course
Poorly spaced tee times
As an example, there is a small course I play with a driveable 270 yrd par 4 to start, followed by a very narrow driving 2nd hole with OB the entire left side of the fairway only 10 yards off the fairway. This course is doomed for slow play because golfers wait for the green to clear because they think they will reach the green, and then a lot of golfers lose balls off the 2nd tee.
Every course should use at least 10 minute intervals because anything less is asking for slow play. Think about it... You tee off at 10am and each golfers takes 60 seconds to get ready and hit off the tee. Golfers then walk to find their balls which might take 3 minutes, followed by each golfer now taking 30 seconds to hit and start walking. That is at least 9 minutes without any real time searching for golf balls, re-hitting off the tee etc... In addition to that 9 minutes, please allow for the players to get far enough ahead so it is safe for the next group to hit.
Courses should never start with Par 3's and ideally an easy Par 4 that is not too short is best to get players spaced out and off to a smooth start.
Beginners can also be slow just because ofthe number of shots they take, and as long as they are not wasting time, they have EVERY RIGHT to take EVERY SHOT.
And we all know about the slow golfers who are just plain slow and ignorant... But those people will never change.
Unless a course has published "Expected Round Time of x hours" it is tough to deal with slow play. Golfers pay their fees and have the right to play whatever tees they want and as long as they hit and walk and hit and walk, you have no right to complain.
Some course are just really tough and slow play is inevitable.