It doesn't help when Airbnb hides important information like check in times way down a listing or under another link the guest has to click. Regardless, I have found the early check in requests, or sometimes DEMANDS, to be a problem from the get go, even when the times were clearly stated at the top of the listing.
Some people don't read anything and others simply don't think it applies to them for some reason. Many are just trying their luck.
I find I just have to stress repeatedly that my check in time is from 3-9pm and that the guest needs to let me know when they are arriving. I will message them over and over until I get this information. If they respond that they will be landing at 9.30am, I send them links to left luggage services and ask, "Would you like to check in at 3pm then, or do a full day of sightseeing and come later? Either way, let me know!"
It is frustrating and time consuming to be sure, but you are always going to have guests asking to check in outside of your time frame if your time frame is not convenient for them. Sure, they shouldn't book the listing if that is the case, but they will because they just expect you to fit in around their plans.
My check in window is 3-9pm, but the other day, I had guests arrive close to 1am. They had booked late flights AFTER booking my listing and after they had been reminded several times that check in was 3-9pm and hadn't bothered to let me know. They were surprised that I was not fine with this, simply stating, "We didn't think it would be a problem."