The movie begins with Mary (Jena Malone) voicing over about how wonderful her summer was during vacation and how happy she was. She goes to a wonderful Christian school and has great Christian friends and a great Christian boyfriend, Dean (Chad Faust), who does a flaming figure skating act for the Lord. They have a tradition of going underwater in a backyard pool and telling each other secrets. One day Dean goes underwater and tells Mary he thinks he's gay. She's so surprised by this that she hits her head on the ladder and passes out underwater. A carpenter who was working next to the pool who looks somewhat like Jesus dives in to save her. She opens her eyes and thinks she's seeing Jesus swimming towards her telling her to save Dean.
Mary spends the rest of the summer trying to get Dean to like girls. She asks her ultra-Christian girlfriend, Hilary Faye (Mandy Moore), for advice at the Christian shooting range. Hilary Faye says that Jesus can restore your virginity, even though she's talking about rape. Mary decides she can only save Dean by having sex with him before marriage and Jesus will make her pure again. She almost walks in on him masturbating to a gay bondage magazine so he's already ready when they have sex.
Mary keeps that fact to herself when school begins again. Hilary Faye picks her and Veronica (Elizabeth Thai) up in her JSUSGRL van. The three are part of a singing group at school called the Christian Angels and Hilary Faye gives them both special pins. She also transports her paraplegic brother, Roland (Macaulay Culkin), who is rather cynical about his condition and the world.
They go by Dean's house to pick him up but he doesn't come out. Mary goes to check on him and his parents answer the door. They inform Mary they found the gay bondage magazine under his bed and have sent him to Mercy House in order to un-gay him. Mary, devastated that the sex didn't work to convert Dean, tells the girls but makes them promise not to tell anyone at all.
They arrive at school and run in to Cassandra (Eva Amurri), the school bad girl who is also Jewish. She transferred into the school to avoid home schooling. Everyone in school is trying to convert her to Christianity and she hates them all. There is an unspoken attraction to her independent ways from Roland, however.
During the first class, Tia (Heather Matarazzo) sucks up to Hilary Faye to try and get in with the group, and Patrick (Patrick Fugit) is introduced as a new transfer. He is a skateboarding missionary and the son of Pastor Skip, the principal of the school. He is immediately taken with Mary just as Hilary Faye is taken with him.
They go to the opening assembly where Pastor Skip (Martin Donovan) comes out and pointedly tries to convert Cassandra like usual. After some students go forward to "recommit" themselves, Cassandra starts acting like she's possessed and starts speaking in tongues, yelling and crawling on the stairs, until Hilary Faye reveals she's actually swearing in another language.
Later in the day the Christian Angels do a performance with Mary on keyboard and Hilary Faye singing. Cass is outside smoking, and Roland comes outside to flirt with her. By the end of the day, Roland has declined his usual ride home with Hilary Faye and is catching a ride with Cass instead.
Later, Mary is watching TV with her mother Lillian (Mary-Louise Parker). A Lifetime special comes on where a woman says she didn't have her period for two months so she thought she might be pregnant, but it was actually cancer. Mary, frightened by this information, goes to the pharmacy to get a birth control test. After bumping into Tia, who works there, she freaks out and shoplifts one. She takes the test and prays for cancer but she's pregnant. The next day Mary declines her usual ride home with Hilary Faye and takes a bus downtown. Cass and Roland have been spending more time together and are skipping class downtown when they see Mary leaving a Planned Parenthood clinic. (Cass: "Now why would a good Christian be going to a Planned Parenthood?" Roland: "To plant a pipe bomb?")
Hilary Faye announces a prayer group to pray for Dean even though Mary didn't want anyone to know. She goes to the prayer group at Hilary Faye's house and yells at Hilary Faye, saying that prayer won't help Dean. Hilary Faye tries to lecture her about the proven medicinal properties of prayer but Mary is furious and storms out of the house.
Mary decides to hide her pregnancy since she thinks abortion is wrong. She starts wearing baggy sweaters to hide her belly. The state forced the school to teach sex education so Pastor Skip reluctantly teaches it. Mary asks if Jesus could want someone to fulfill his will by having sex before marriage, and Pastor Skip says no.
Cass starts teasing Mary about being pregnant, and one day after she makes lewd hand motions to Mary she gets upset and leaves to the bathroom. Cass follows her and tricks her into admitting she's pregnant.
Mary cries and Cass, softening, comforts her. She then makes Mary skip class and go back to her place along with Roland to get her a better concealing outfit than her atrocious sweaters. Roland's been buying Cass clothes with his sister's credit card.
The three start to become closer and Mary starts hanging out with them more than the Christian Angels. To replace her, Hilary Faye starts to accept Tia as the third member of her clique. Pastor Skip, concerned about Mary, asks the Christian Angels to help her out and guide her to the right path. The three catch up to Mary after school one day in the van, throw her in it, and attempt to perform an exorcism on her. Furious, she gets away, screaming that the Bible is not a weapon.
Patrick comes by on his motor scooter and picks her up, giving her a lift home, saying he admires how she can think for herself. He asks her out but she says she's not dating. One day at the mall, Hilary Faye and Patrick come across Mary, Cass, and Roland eating. Cass pretends to want to get saved to provide a distraction for Mary and Patrick to go off. He brings her to a backroom in the mall and tries to kiss her. She gets startled and leaves.
Mary starts to doubt Jesus's plan and is starting to enjoy playing pranks on Hilary Faye. One such prank gets the three put on prom detail helping Hilary Faye put up decorations. Mary still hopes that Dean will be cured in time for the prom and he promises over the phone he'll be there. Hilary Faye gets news while they're putting up decorations that a hot Christian rock band has agreed to perform at the prom and she's annoyingly giddy at the news.
To get back at Hilary Faye, Cass borrows a photo of Hilary Faye from Roland from back when she was ugly with braces and a goofy face and puts it on every computer monitor in the class. Hilary Faye, extremely upset, prays feverishly that night asking what she should do for her revenge.
The next day everyone comes to school shocked that it has been vandalized. Anti-Christian graffiti has been sprayed all over school, and everyone's locker is searched. Planted in both Cass and Mary's lockers were cans of spray paint. Additionally, they find an ultrasound of Mary's baby in her locker so her secret is out. Cass and Mary are expelled.
Lillian soon finds out about Mary's baby. Pastor Skip and Lillian have been seeing each other clandestinely, even though Pastor Skip is still unhappily married, his wife in South America.
Pastor Skip tells Lillian that Mary would be best helped sent away to Mercy House for unwed mothers. Lillian protests but Pastor Skip says he'll stop seeing her if she doesn't.
Mary is sadly packing her things for Mercy House on the day of the prom when Cass calls and tells Mary to come downtown. She takes a taxi and finds Cass and Roland dressed up formally. They declare they're going to crash the prom with the credit card bill showing Hilary Faye purchasing the spray paint. They procure a dress for Mary and surprise her with Patrick, who shows up in a limo. He wants to go to the prom with her regardless of her baby.
They go to the prom and try to blend in, dancing with everyone else.
Hilary Faye, however, notices and goes to the mike, pointing them out and asking Pastor Skip to make the expelled students leave. Roland declares that Hilary Faye was the one who vandalized the school and he has the credit card bill to prove it. Hilary Faye claims he could have purchased the spray paint himself. Mary asks Hilary Faye to swear to God that she did not do it. After hesitating, she swears to God she didn't do it. Tia, however, shows everyone a receipt for the spray paint she found in Hilary Faye's van with her signature on it. Hilary Faye freaks out and pushes her way out of the prom, leaving.
As soon as she's gone, there's another commotion. A bunch of the kids from Mercy House have gotten kicked out and crashed the prom as well. Dean is there with his new boyfriend, Mitch. Mary is overjoyed to see him and Dean is surprised to see he'll be a father. Pastor Skip comes to the back and tries to get them all to leave but they all sermonize him about how the world is not black and white and the school has kicked them out and Mercy House has kicked them out, where do they go?
With a screech of tires, the students all go outside to see Hilary Faye in her van tearing across the parking lot in an irrational rage, driving towards the huge Jesus statue out front. Believing Jesus has betrayed her, she crashes into cars and finally slams her van into the base of the statue, totaling the van. Mary faints. The statue's head falls off and smashes down on top of her van but is thankfully not heavy enough to shatter the windshield. Hilary Faye stumbles out, with her brother and Cassandra over to help. ("Are you all right?" "No, I'm not all right! I just crashed my van into Jesus!")
They stumble back to an ambulance that just arrived to transport Mary to the hospital since she just went into labor. The medic says only one of Patrick and Dean can come along when Lillian suddenly shows up and hops in the ambulance. She realizes she cannot send her daughter to Mercy House.
Mary delivers a healthy baby and everyone is happy. They see Pastor Skip get out of his car with flowers, but, in a nice, true-to-character touch, he can't bring himself to accept this and goes back to his car without entering the hospital. A nurse takes a photo of the happy "family," Mary and her baby and Lillian and Cass and Roland and Dean and Mitch and Patrick, and we fade to black.