K.S.
Hi there, here's what I think. Go about it in the exact opposite way that you're doing now. More than being able to do what he wants, he wants and needs to know that you hear him. So if he starts to go on and on about let's say the park, then get to his level, look him in the eye, and say "you really like the park, right? you want to go there and play? let's do that! We are going to have lunch and then take a nap and then let's go to the park". And then immediately start distracting him- ask him what is his favorite thing at the park? does he think other kids will be at the park? would he like to bring his bucket with him? and so on. Then start diverting into whatever else it is that you need to be doing.
It seems counterintuitive, I know. You are trying to get him to focus on something else. But his constant barrage of talk about it is his way to feel heard and understood. So taking a couple of minutes to really let him know you hear him will work wonders. If he talks about the park and you can't go that day, work that in. Again, do all of the 'you love the park, right' talk. And then maybe do the calendar idea. Say "I really want to take you to the park, let's look at when we can go" and then look at the calendar, and maybe even give him a tree sticker or something to put on the day when you can go. And again, divert and distract. My big point is that trying to ignore him will backfire.
As far as not wanting to leave, it's along the same lines. Give the warnings, but not in minute increments, he won't understand that. Tell him 'once you finish this game with Johnny, we are going to put the toys away and then leave'. Then at the same time that it's time to go, start the same process. "what was your favorite toy to play with today?" "what is johnny's favorite toy", "did you know we are making cookies for dessert?" you get the idea. It takes some effort and getting used to, but this really will work if you give it a try.
Good luck!