May (Angela Bettis) is an awkward, lonely young woman who had a troubled childhood due to her "lazy eye" which caused her to feel abnormal and out of place. As a little girl, May's mother takes her to an eye doctor, who suggests that May wear an eye patch to correct her vision. Unfortunately, this only encourages the other children to make fun of her, most notably on their first day of school, when one of her fellow students asks her if she is a pirate. She has very few social interactions with people throughout her life with her only "true friend" being a glass-encased doll named Suzy made by her mother and given to May for her birthday. After presenting her with the gift, her mother tells her, "If you can't find a friend, make one."
As an adult, May works at a Veterinary Hospital assisting with surgeries in a lower-class section of Los Angeles. May's optometrist fixes her lazy eye, first with eye glasses, then with a special form of contact lens. As May attempts to interact with the people around her, she sees Adam (Jeremy Sisto), a local mechanic, around town and begins to follow him. She times her visits to the local laundromat and her lunch breaks with his in order to meet up with him so she can watch him. The seemingly perfect guy, Adam gets to know May when she finally manages to get the courage to walk up and introduce herself to him, and when she tells him that she's weird, he replies, "That's okay. I like weird". May has a fixation on his hands, which she considers to be the most attractive part of him, and Adam seems to find her attractive as well. They start dating and Adam teaches May to smoke cigarettes, teasing her when he realizes she has never smoked before. He gives her his pack of his cigarettes and tells her to 'practice'. At the same time, May's lesbian colleague Polly (Anna Faris) who works as the receptionist at the vet clinic, begins to show an attraction to May, while at the same time poking fun at her for her oddness. One day while May is feeling especially low, she makes a random remark that Polly has a beautiful neck. Polly then gives her pet cat Loopy to May, ostensibly because of her "bitch" landlord's new rules not to have pets around.
One day, Adam shows her a film he made for his university titled 'Jack and Jill'. The black-and-white silent film reveals a story of two young lovers who go on a picnic and end up eating each other. May becomes clearly aroused by the blatant cannibalism in the film and, during what started as an intense session of making out, gets carried away and bites Adam on the lip, causing him to bleed profusely. Adam is finally disturbed by May's strange personality and leaves. May feels guilty and blames her doll Suzy (who frightened Adam upon viewing her) for encouraging her to make bad choices. She shouts at her and shoves her in the cupboard.
May then inquires about working at a school for disabled children, specifically for looking after the blind children she saw playing in the park near her workplace. She is especially interested in a lonely girl named Petey, who she feels she can identify with. The little girl also likes May so she gives her an ashtray made of clay with May's name carved into the center of it. At about this time, May finally gives in to Polly's wiles and starts a romantic affair with her.
After Adam stops calling her (weirded out because she drew blood while they were kissing), May goes to his house and accidentally overhears him and a friend calling her a loony and saying he's glad he could get rid of her. Heartbroken, May goes to see Polly only to find that she's with another girl. Returning home, May's totally miserable and when Loopy refuses to come near her, she becomes enraged and throws the clay ashtray at the cat, striking her on the head and killing her. Over time, May further isolates herself in her apartment becoming more and more delusional, thinking that her doll Suzy is talking to her through a series of crackles from her glass case (shades of 'Repulsion'). Soon, May tries to phone Adam, which he does not pick up. May thinks that this somehow signifies that Suzy is jealous of Adam and does not want May to be near him.
The following day, May sitting on a bench at a local bus stop when a punk boy named Blank (James Duval) sits besides her and begins talking to her. He becomes interested in her odd remarks about people not being entirely perfect but only having perfect "parts". May doesn't like him at first, but then says she likes the tattoo he has on his arm. They go to May's aparment and when he goes to the freezer to get ice, he finds the cat's corpse wrapped in plastic wrap. Flabbergasted, he begins to panic and calls May a freak, infuriating her; she stabs him in the head with a pair of scissors.
Later, she goes to the school for blind kids and shows them Suzy, her doll, telling them that that is her best friend. The children cannot see it, so they want to touch. May tries to keep the doll away (as Suzy is delicate) and struggles with the kids until the doll falls and the glass case shatters into pieces all around the floor. The children begin to crawl about looking for the doll, and the glass cuts into their hands and knees. May also gets down on the floor to rescue Suzy, cutting herself in the process. She is covered in not only her blood, but the blood of the children as well.
Carrying the now-destroyed, blood-covered Suzy, May returns home. She is devastated at all the things that have happened to her. She even scratches her irritated eyes, and they begin to bleed from the contact lenses in them. Suddenly, she realizes that the people she had known as her friends were not friends at all; there were only parts of them that she considered 'friends'. She simply comes to the conclusion that a perfect friend can only be made of all the perfect parts of the people she thought were her friends.
On Halloween night, May dresses up in a homemade costume similar to Suzy's dress, along with straighting her hair out as well as putting on white facial powder, making her face pasty white, as well as blood-red lipstick. She rents a large ice cooler hooked up to a dolly, and goes out. May first goes over to Polly's house. Here, May also adopts a "normal" manner and attitude, very unlike her usual innocent, stamering, childlike behavior; she starts talking to people who interact with her in a cold, unhesitant, impassive tone. At Polly's house, she and Polly carry on a normal conversation about work until May pulls out a couple of scalpels that she stole from the animal hospital and puts them in each side of Polly's neck. Polly laughs at her, thinking this is a joke and stating that she knows that May would never hurt her until May suddenly slashes her neck, much to Polly's astonishment before dying.
A little later, Ambrosia, Polly's other lover, arrives at the house, irritated at May's presence. May admires her legs and asks her to turn around for her. Ambrosia accepts, but not without calling her a freak and making derisive comments about her and Polly's previous relationship. After this, May stabs her on both sides of her head.
Lastly, May goes to Adam's house. When she arrives there, she finds that Adam is with another girl called Hoop (for her hoop earrings) who lets May come in, much to Adam's annoyance. They sit at the table, and May asks Adam to touch her face. Adam refuses, something which leads into a discussion between May and Hoop, who tells her that Adam is hers, now. Finally, she lets Adam touch May. He indignantly pokes May's forehead, at which point May stabs Hoop in the neck. Adam walks back and screams in horror, but May stabs him in the stomach.
Back at home, May starts designing her "new friend", which is basically a Frankenstein-esque life-sized rag doll made from her deceased friends who's body parts she keeps in the cooler she's carrying around. She uses Blank's arms, Polly's neck, Adam's hands, Ambrosia's legs, Hoop's earrings (still on her severed ears), and Loopy's fur, to substitute hair. The head and torso are simply different scraps of fabric stitched together and stuffed, while the other appendages are finally sewn together. May then changes out of her Suzy costume, washes herself off, and reverts back to her old childlike personality.
Once the macabre doll, named Amy - taken from the letters in May's name, which was written on the now-destroyed ashtray - is finished, she realizes that Amy can't actually see her. So, in a rush of misery, she gouges out her right eye (the lazy one) with the scissors. Crying in pain, she puts it on the head of Amy and sobbingly begs for the toy to look at her. Exasperated and in pain, May leans her head against Amy's shoulder. May sees her friend suddenly come to life and touch her face lovingly, with Adam's treasured hands. May smiles.