Socialite Claire Gregory (Mimi Rogers) attends a party and art show sponsored by one of her oldest friends, Winn Hockings (Mark Moses). Accompanying her is her straitlaced boyfriend, Neil Steinhart (John Rubinstein). In another part of town, there is another party, this one for newly appointed NYPD detective Mike Keegan (Tom Berenger).
Winn is accosted by a former partner, Joey Venza (Andreas Katsulas), who is angry because Winn had not come to him to borrow money for his new art studio. After a short argument, he stabs Winn to death. Claire witnesses the killing as she steps out of the elevator; she screams and is spotted by Venza. He pursues her, but she manages to get back into the elevator just in time.
The police are called in and the new detective Keegan is there. He is a married man, but immediately falls for Claire. Along with fellow cops, he is assigned to protect Claire until she can make a positive ID of Venza (once he is arrested) and testify in court.
Keegan is determined to protect Claire and goes to extremes to do so. Venza makes numerous threats and attempts on her life, nearly succeeding at one point. Keegan and his wife Ellie (Lorraine Bracco) separate over his involvement in the case. He and Claire acknowledge their love but Keegan cannot bring himself to simply abandon his family.
At the end, Venza, who draws out Keegan by taking his son hostage, is shot by Ellie and killed. Claire breaks up with her staid boyfriend and intends to go to Europe to get over Keegan, who returns to his wife and son.

Question: Why can't Claire and Keegan be together?
Answer: Because Keegan feels he cannot abandon his family.
Alternative answer: Keegan is married