As a few others have implied, it's always been an issue even when I do it early on (and I do keep nalia usually- call me a softy, but I feel guilty leaving her, while I don't with Aerie, or even Imoen). Might be because I try and go sleeping as few times as possible- I'll finish every dungeon within, say 2 sleep cycles at most. Also, I'll go ahead and do minor quests quickly- finished the windspear hills with moderate health, and fatigue isn't kicking in, time to go rescue Haer'daelis. Tends to keep my games shorter, but also screws up the timed quests.
I'm not really a modder or a programmer, but I'm trying to think of ways it could be done. I know that romance dialogues are typically timed based on "real time"- i.e., a romance will advance once a certain amount of time has passed in real time. That's annoying, but it's relatively easy to fix- either leaving the game paused or else CLUACing or Shadowkeeping the variable down to 1 will typically cause a dialog to occur in short order. The Keep, on the other hand, seems to be game time based- every week or so someone comes.
I'm wondering if maybe there's a way to script a dialogue to advance one or both. Something like <The romance is taking too long> or <The Keep is taking too long>. Would it be possible to throw that in as a dialogue option, and have clicking on it change the variable? (For the romance, changing it to 1 would probably suffice, I'm not certain what would be required on the keep quests but I'd imagine they're also based on some sort of timer- I'm just not sure how). That way people who finish everything early could choose those dialogues, and people who don't would have things go on at a normal rate.