Kyle Kingston (Alex Pettyfer), an arrogant and vain son of wealthy news anchor Rob Kingson (Peter Krause), bullies Kendra Hilferty (Mary-Kate Olsen) who magically transforms handsome Kyle into a bald, tattooed, and scarred shell. If Kyle does not find someone who loves him by the next spring he will remain in this ugly state forever. Kyle is taken to live in a private house with their maid Zola (Lisa Gay Hamilton) and a blind tutor Will (Neil Patrick Harris). Both are a comfort to Kyle when his father begins to neglect him.
As spring draws closer, Kyle finds himself infatuated with Lindy Taylor (Vanessa Hudgens), a girl from whom he had kept his distance at his former school. He sees her father, a drug addict, engaged in an altercation with two drug dealers and shoots one dead while the other vows to kill Lindy. Kyle persuades Lindy’s father to allow her to move in with him. Lindy is furious about hiding and doesn't speak to Kyle, but eventually, Kyle reveals himself and they begin to warm up to each other. Kyle writes a letter professing his love for Lindy but does not give it to her for fear of rejection. He visits Kendra to plead for more time; she refuses, but agrees to restore Will's vision and grant green cards to Zola's three children in Jamaica if he gets Lindy to fall in love with him.
The criminal who threatened Lindy’s life lands in jail. Lindy’s father overdoses and is in the hospital. Kyle permits Lindy to leave and see her father and drives her to the station. He gives her the letter but regrets doing so as she tells him he’s a good friend. Lindy calls him after reading the letter, but being heartbroken Kyle does not answer the phone. Persuaded by Will and Zola, Kyle goes to meet Lindy one last time before she leaves on a school trip to Machu Picchu. Lindy professes her love for Kyle "Hunter," says the words "I Love You" to break Kyle's "Hunter" curse, and Kyle tells her to go. Kyle’s normal self is restored and Lindy runs out looking for "Hunter" Kyle but Lindy does not recognize him until she calls his phone and Kyle's phone starts ringing. When Lindy realizes that Hunter is in fact Kyle the two share a passionate kiss in the middle of the street.
Will wakes up one morning and can see again and Zola finds three green cards for her children in the mail from the government. Kendra approaches Rob Kingson's office as a new intern, implying that Kendra will likely do the same thing to Rob as she did to Kyle. Then, in the credits, we see them on holiday together in different countries.