Dr. Carter Nix (Lithgow) is a respected child psychologist. His wife Jenny (Lolita Davidovich) is an oncologist. Carter takes time away from his flourishing practice to care for their two-year-old daughter, Amy. Jenny becomes concerned that Carter is obsessively studying their child; he regards her like a scientist tracking the development of his creation.
The audience quickly learns that Carter suffers from multiple personality disorder. His multiples are Cain, a streetwise hustler, Josh, a traumatized little boy, and Margo, a middle-aged mother figure. Carter/Cain is killing young mothers to procure their babies and toddlers.
In a side story we learn that Jenny is having an affair with Jack Dante (Steven Bauer), the widower of a former patient. She fell in love with him and had a relationship with her years ago, but he left her. Now he's back, and she plans to leave Carter and run off with him. When Carter accidentally discovers their tryst, he descends all the way into his madness. Carter/Cain begins leaving subtle clues for the police that Jack is the real killer.
Next Carter attempts to kill Jenny by submerging her car in a lake. She pulls herself out and confronts Carter at their home. Unable to find Amy, Jenny demands Carter tell her where she is. Carter replies that she is with his father whom Jenny knows has been dead for years.
Carter is apprehended for attempted murder. The police bring Dr. Lynn Waldheim (Frances Sternhagen) to interrogate him. Though enduring hypnotherapy, Dr. Waldheim interviews Carter and informs the police that she co-wrote a book with Dr. Nix Sr. called Raising Cain about a boy with multiple personality disorder. The doctors agreed that patients with MPD seemed to share certain childhood traumas, but there could be no ethical way to test these theories through direct clinical observation. Dr. Nix Sr. had extensive detailed knowledge of Cain's childhood torture, including a few taped recordings of their sessions. However, Dr. Waldheim was never allowed to meet Cain. She pieced the situation together: Dr. Nix Sr. abused his own son to gain first-hand accounts of his traumatic psychological development and study the emerging personalities. Horrified, Waldheim quit the project.
During interrogation, the "Carter" personality disappears, and "Margo" (the mother) and "Josh" (the child) act and speak for him. Josh recites a rhyme:
"Hickory dickory dock. Cain has picked his lock. He did a bad deed now Josh comes to bleed. Hickory dickory dock."
With this, Josh vanishes, and Margo assumes control of the body. She stonewalls Waldheim from any further questioning.
Eventually, Carter/Cain break from their confines. They pounce upon Dr. Waldheim, knocking her unconscious, stealing her wig, dress, and coat. "They" then leave the building disguised as her. The police soon find Waldheim on the floor of an interview room begging them to arrest Carter before any children are harmed.
In fact, Dr. Nix, Sr. (also played by Lithgow) is alive, having faked his own death to elude prosecution for attempting to buy babies. He has established a new identity and a clandestine research facility in Norway. He has been using Carter and his multiples to procure the children so he will have an adequate control group to study the development of MPD.
Jenny follows who she thinks is Waldheim to a motel, but it's actually Carter/Cain. She follows Carter/Cain, who is now Margo in Waldheim's wig and clothes, into an elevator. When it opens, she sees Dr. Nix Sr. with her daughter Amy. While Jenny begs for Nix Sr. to give back her daughter, Carter/Cain/Margo stabs "their" father from behind. Shortly afterward, Jack arrives with the police, and Carter/Cain/Margo disappears.
The movie ends with Jenny and Amy in a park. Amy plays alone while Jenny chats with another mother. Soon Amy runs off into the woods saying "Daddy, Daddy". Jenny calls for her and follows into the woods. She shortly after finds Amy, who says her father has gone away. When Jenny bends down to pick Amy up, Carter appears behind her in a wig and a dress; Margo is now in control. Jenny holds Amy in her arms, oblivious to who is behind her.