My ex-wife was chronically late. It was a control issue. As stated by others, she felt her time was more important than other people's time. I tried to drive the point home one time when we had to go to a wedding. The ceremony was only a 15 minute drive away and I was ready to leave the house 45 minutes before it started. She kept wasting time, as usual. Normally I would have kept hounding her about how late it was getting. That time I made it a point not to say anything to her about how late it was getting. (Yah, I know, it was immature. I was very immature at the time.) Eventually she asked me what time it was. I told her the wedding would start in 5 minutes. She screamed at me and bitched about why I didn't keep reminding her of the time. I said, 'Why do you care, you're late every other time?' She said 'Weddings are different.' Uh huh.
I said to her 'I guess I was supposed to know you could be late for every other social occasion except a wedding.' She said 'Yes'.
This, from a woman who showed up 2 hours late for her own birthday party at someone else's home.
Regarding your friend, I would start setting times and stick to them. Give her 5 - 10 minutes leeway, depening on how gracious you feel, then leave without her, or start dinner, or whatever. She will either learn to be on time or have to live with the consequences. Trust me, if you don't do this she will continue to take advantage of your generosity and continue to be as late as she wants to be.