First of it seems absurd that somebody can curse Bhagavaan Vishnu, but it is true and it has happened for a few times. Vishnu has accepted their curses happily. Here are five stories in which people have cursed Him and He had to act accordingly.
Once Naarad did some Tap so Indra got worried. He sent Kaam Dev to disturb his tap, but he could not disturb his Tap. Naarad got proud of his victory over Kaam Dev, so he went to Brahmaa and Shiv to tell this. In spite of Shiv's warning he went to tell this to Vishnu too. Vishnu found a sprout of pride in His Bhakt's heart, so He thought to crush it then and there. For this He created a beautiful city on the way where Naarad was going to. When Naarad saw that city, he entered the city and found that its king was organizing his daughter's Swayamvar. He went there, saw the princess' hand and told the King that she would be married to a great man.
Now Naarad was worried as he himself wanted to marry her. He thought that he needed beauty at such time, and who else was his best friend to give it to him. So he went to Vishnu and told him that he needed the beauty to marry the princess. Vishnu said - "Naarad, i will do the same what is beneficial for you." Naarad Jee came back and sat in the Swayamvar court to marry the Princess. Now Naarad Jee was sure that he must be looking very beautiful and the Princess will surely choose him, but the Princess did not even look at him. In fact Vishnu had made his face of a monkey's face. So the princess was seeing him as monkey faced. Vishnu was also there, and she put her Jayamaalaa in Vishnu's neck and Vishnu set off to His Lok with her. Now Naarad was very angry. He also followed Vishnu.
There were Shiv's two Gan also who wee seeing all this, they ran away from there laughing - "Naarad Jee, Look at your face in the mirror." Naarad Jee saw his face in water and found it of a monkey's face. He went to Vishnu straight and found Him with Ramaa and the Princess. He started abusing Him - "You have made a mockery of my face. Nobody is above you to say anything to you, that is why you have behaved with me like this, but now I will see you. I curse you that you incarnate on Prithvi, wander around in suffering of the separation of your wife as I am suffering, and you will get the help only from those whose face you have given to me (monkeys)." Vishnu accepted his curse, but in the meantime Naarad saw that there was neither Ramaa nor the Princess. Vishnu was standing alone. He immediately understood that this was Maayaa of Vishnu. He fell on His feet and asked for His forgiveness.
That is why Vishnu was incarnated as Raam, suffered in the separation of Seetaa, and got help only from monkeys.
This story comes in Bhavishya Puraan, 4/21. Krishn tells this story to Yudhishthir - "Bhrigu Jee had a wife named Divyaa (we have never heard that he had a wife of this name). She was very Pativrataa woman. Once Asur got very afraid of Vishnu, so they came running to Vishnu for refuge, so Bhrigu Rishi gave them refuge and he himself went to Himaalaya to take Sanjeevanee Vidyaa. In the meantime Vishnu came there and He killed all Daitya in a few moments. Seeing this Divyaa got very angry and was about to curse Vishnu, that He cut Divyaa's neck with His Chakra. At the same time Bhrigu also came back. Seeing all Daitya and his wife dead, he filled with rage and cursed Him - "You incarnate on Prithvi 10 times." After telling this story, Krishn said - "That is why to keep Muni's words I keep coming on Prithvi."
When the Mahaabhaarat war had ended, Krishn went to Gaandhaaree to console her on the death of her 100 sons. She said - "O Krishn, You could have stopped this war, if you wanted to, but you let it happen. You have killed my 100 sons. If you had stopped this war, I would have not been weeping for my sons. I curse you that your whole family should also be destroyed like this fighting among themselves." The same thing happened. Krishn's whole family was killed fighting among themselves.
Uttank was the disciple of Ved (the disciple of Rishi Dhaumya). He was about to curse Krishn, but Krishn stopped him doing so, so that his Tap is not wasted. When Mahaabhaarat war was over, and Krishn was going back to Dwaarakaa, He met Uttank on His way. Uttank asked Him about the welfare of kaurav and Paandav - "Have you made Kaurav and Paandav even?" Krishn explained - "I tried my best but I could not help. I could not stop them from fighting each other and in that fight all Kaurav were killed and Paandav won." Hearing this Uttank got very angry, he said - "Even though you were able to stop the war, you did not stop it, you let it happen and killed them all, that is why I curse you..." Krishn interrupted him - "First you listen to me then decide what you want to do, because I do not want your Tap should be wasted by this curse."
Thus Krishn stopped him cursing Him, otherwise he would have cursed Bhagavaan. As Vaishampaayan Jee was telling this story to Janamejaya, Janamejaya asked him - "What great Karm or Tap he did so that he could curse even Bhagavaan?" Then Vaishampaayan Jee told him the story of his Karm. Read this story here.
Tulasee was the wife of Shankhchood Daitya. Shankhchood had the boon from Brahmaa Jee that he would not be killed by anybody else than Shiv and gave an armor of his wife's Paativrat also to him , that till she will be faithful to him, he would not be killed. Thus Shiv also could not kill him just like that, so he took the help of Vishnu who broke Tulasee's Paativrat. Vishu went to Tulasee in disguise of Shankhchood and had her. When Tulasee came to know, she filled in rage cursed Vishnu to be a black stone (as His heart was black and of stone too). Vishnu immedeiately turned into a black stone (Shaalgraam).
Then Vishnu said to her - I accept your curse because it was justified, but since my Darshan does not go waste, I grant you a boon that you will be born as a plant, Tulasee, and I will not accept anything without you. Beside you will be turned into a river too and i will always live in your heart." That is why Vishnu's Naivedya is not complete without Tulasee leaves and Shaalgraam live in Gandakee River. After this only Shiv could kill Shankhchood.