Sam Wheat (Patrick Swayze), a banker, and Molly Jensen (Demi Moore), a talented potter, are a loving couple who move into a New York City apartment. At work, Sam discovers discrepancies in some bank accounts and confides in his good friend and colleague, Carl Bruner (Tony Goldwyn). Carl offers to investigate the matter, but Sam decides to investigate himself. Soon afterward, Sam and Molly are attacked by armed thug Willy Lopez (Rick Aviles), after leaving a theater and Sam is killed by a gunshot in an ensuing fight with Willy. Sam's ghost arises from the dead body next to the distraught Molly and he gradually realizes that he is a ghost whose presence cannot be seen or heard.
Sam meets Oda Mae Brown (Whoopi Goldberg), a con-artist posing as a medium and realizes she can hear him, although Oda Mae had been faking her abilities until then. Oda Mae is persuaded by Sam to tell Molly that she is in danger because Willy still has his wallet containing their address, but Molly is still in shock and will not believe Oda Mae. Carl convinces Molly that Oda Mae is a fraud. Sam discovers that Carl was involved in a money laundering scheme at the bank and that the attack was an attempt by Carl to acquire Sam's security codes.
Molly remains unconvinced by Oda Mae's messages and even talks to the Police, but they inform her that Oda Mae is a known confidence trickster.
Sam learns from an aggressive New York City subway poltergeist (Vincent Schiavelli) how to master the skill of moving solid objects by his mental powers alone. He persuades Oda Mae to thwart Carl's money laundering scheme by impersonating the owner of Carl's fake bank account. With Sam sitting next to her unseen, she withdraws the balance and closes the account, donating the amount ($4 million) to a homeless shelter.
Carl is desperate when he cannot access the fake bank account which is now closed. He learns that Oda Mae closed the account and declares that if the money is not returned, he will kill Molly. Sam catches Willy in Oda Mae's apartment and physically attacks him. Terror-stricken, Willy attempts to escape from Sam but is killed in a traffic accident. Willy's ghost arises, only to be grabbed by a group of howling demons and pulled into the shadows, presumably to Hell.
Afterwards, Sam and Oda Mae return to Molly's apartment to warn her about Carl, but she refuses to let her in and breaks down in grief. Sam enters the apartment and tells Ode Mae to push a penny under the front door, which Sam lifts into the air in front of Molly. Astonished, she finally realizes the truth and lets Ode Mae inside. After calling the Police about Carl, Ode Mae allows Sam to possess her body, allowing him and Molly to share a dance one final time.
Carl arrives, prepared to murder Molly and Oda Mae, but they flee. Sam is left momentarily weakened by the possession, leaving Molly and Oda Mae to fend for themselves against Carl. After evading him for a brief time, he seizes Ode Mae and threatens her at gunpoint for the money. Molly comes to Oda Mae's rescue and is knocked aside just as a fully recovered Sam arrives to help them. Finally, Carl attempts to flee through a nearby window, but not before flinging a scaffolding hook in Sam's direction. The hook swings back and partially shatters the glass in the upper part of the window, which plummets down on Carl as he is climbing through, impaling him through the chest. Carl becomes a ghost himself much to his astonishment and to Sam's grief. Sam then watches in silence as the shadowy demons arrive and drag a screaming Carl away into the darkness.
As Sam goes to Oda Mae and Molly and asks if they are all right, Molly suddenly realizes that she can hear him. As a heavenly light begins to fill the room, Sam becomes fully visible to both Molly and Oda Mae. Sam looks behind him and sees hundreds of people, presumably angels. Now realizing that his task is completed, he can finally move on. After thanking Oda Mae for everything she has done to help him, Sam says an emotional farewell to Molly and departs to the after life.