Elder Aaron Davis (Steve Sandvoss), a young Mormon missionary from Pocatello, Idaho, is sent to Los Angeles with three other missionaries to spread the Mormon faith. They move into a bungalow apartment next to the apartment of openly gay party boy Christian Markelli (Wes Ramsey), an aspiring actor who works as a waiter at Lila's, a trendy restaurant owned by retired actress Lila Montagne (Jacqueline Bisset). Christian's best friend and roommate is Julie Taylor (Rebekah Johnson), who also works as a waitress and barmaid at Lila's Restaurant. His other co-workers include Traci Levine (Amber Benson), a young woman who struggles to get by while hoping to become a famous actress, and Andrew (Khary Payton), another aspiring young actor and openly gay party animal who has been HIV-positive since he was 15 because of his promiscuous lifestyle in junior high school, but still remains in good health. Intrigued by his new, sober Mormon neighbors, Christian makes a $50 bet with his cynical co-workers that he can seduce one of them. Christian soon realizes that Aaron, the most inexperienced missionary, is a closeted homosexual.
Aaron and Christian become acquainted after several encounters in the apartment complex. When Christian accidentally cuts himself on a piece of metal and faints, Aaron helps him indoors and cleans his wound. Christian seizes the opportunity to seduce Aaron and nearly succeeds. However, the hesitant Mormon becomes upset by Christian's standard patter that sex "doesn't have to mean anything." Aaron angrily replies that Christian "equates sex with a handshake", and after accusing him of being superficial and shallow, walks out. Worried that Aaron is right, Christian joins Project Angel Food to deliver meals to people with AIDS, through which he befriends one man named Keith (Erik Palladino).
Later, Aaron's fellow missionary, Paul Ryder (Joseph Gordon-Levitt), has a cycling accident. On returning to his apartment, a distraught Aaron encounters Christian, who tries to comfort him with a hug. Both men are overwhelmed by their feelings and end up kissing. Lost in the moment, they fail to notice the return of Aaron's roommates. Christian is ordered to leave. He returns to the missionaries' apartment the next day to explain himself, but is told that Aaron has been sent home in disgrace. This leads to a confrontation with Elder Ryder, as well as Aaron's two other Mormon roommates, Elder Harmon and Elder Gilford, who are angry that Christian has corrupted a decent young man for no apparent purpose. Christian admits that he initially just wanted to win a bet, but says "it's not about that" anymore.
Recognizing Christian's genuine distress, Ryder softens enough to tell him that Aaron has a five-hour layover in Salt Lake City. Christian catches the next flight there and eventually finds Aaron standing in the snow outside the terminal. Christian confesses his love, and despite his profound misgivings, Aaron admits his own feelings of love. With all flights cancelled due to a snowstorm, Christian and Aaron are able to spend a loving and intimate night together in a nearby motel. However, when Christian awakes in the morning, he finds Aaron has gone. He returns sadly to Los Angeles.
On arriving home in Idaho, Aaron is excommunicated by the church elders, led by his own father (Jim Ortlieb), who is the Stake President (regional leader). Aaron is rejected by his father and scolded by his mother (Mary Kay Place), who informs him of the $50 bet, which she was told about by the Mission President. Overwhelmed by despair, Aaron unsuccessfully tries to commit suicide. He is sent by his parents to a treatment facility to undergo aversion therapy to "cure" him of his homosexuality.
Back in Los Angeles, Christian is desperate to find Aaron and eventually locates his home address and phone number. On phoning, he is devastated to be told by Aaron's mother that "Thanks to you, my son took a razor to his wrists; thanks to you I have lost my son." Believing that Aaron is dead, Christian seeks out the family home in Idaho, where he tearfully returns Aaron's family heirloom watch to his mother. She recognizes that she may have been too harsh in her judgment, but is too late to stop Christian before he drives off.
Late one night in the treatment facility, Aaron hears a female voice singing and goes to investigate. He discovers a music video playing on television with a song performed by Julie, Christian's roommate. Julie took the lyrics from a diary entry that Christian had written describing his anguish at losing Aaron. As the video plays, Aaron sees an on-screen message stating that the song describes a friend of the performer. The video prompts Aaron to return to Los Angeles in search of Christian. Believing that Christian has given up his apartment, and having nowhere else to go, Aaron makes his way to Lila's restaurant. By chance, he had befriended Lila while on missionary work after her life partner died, though he did not realize that she owned the restaurant where Christian worked. Christian is shocked but overjoyed at seeing Aaron alive, and their reconciliation ends the movie on a happy note.
In the final scene, Aaron and Christian meet at Lila's Restaurant where she throws a Thanksgiving dinner for all her employees, including Julie, Traci, and Andrew among them. Together with Christian's co-workers, Aaron and Christian celebrate Thanksgiving and look forward to a happy future together.