Better late than never!
JavaScript (ES6), 98 97 bytes

Saved 1 byte thanks to Neil

Takes the list of guests l and the party time h in currying syntax (l)(h). Expects a trailing linebreak on the list. Returns a space-separated list of names such as Lisa Bob.

l=&gt;h=&gt;l.replace(/(.* )(.*)\n/g,(_,a,b)=&gt;(t-=T(b))&lt;0?a:'',t=(T=h=&gt;eval(h.replace(/:/,'*60+')))(h))


Formatted and commented

l =&gt; h =&gt;                         // given a list of guests l and a party time h
  l.replace(                      // for each guest in l:
    /(.* )(.*)\n/g,               //   extract the name a and arrival time b
    (_, a, b) =&gt;                  //   subtract the arrival time from the time counter
      (t -= T(b)) &lt; 0 ?           //   if the result is negative:
        a                         //     the guest is late: keep the name
      :                           //   else:
        '',                       //     the guest is on time: remove this entry
    t = (                         //   initialize the time counter t
      T = h =&gt;                    //   define T():
        eval(                     //     a function that takes either a time
          h.replace(/:/, '*60+')  //     in hh:mm format or an amount of minutes
        )                         //     and returns an amount of minutes   
    )(h)                          //   call it with the party time
  )                               // end of replace()


Demo



let f =

l=&gt;h=&gt;l.replace(/(.* )(.*)\n/g,(_,a,b)=&gt;(t-=T(b))&lt;0?a:'',t=(T=h=&gt;eval(h.replace(/:/,'*60+')))(h))

console.log(f(`Kevin 13:02
Ruby 5
Sam 3
Lisa 6
Bob 12
`)('13:15'))