I've come across this problem several times and I'm still not sure what causes it. Previously the only solution I had was to disable replication and re-create all the subscriptions (by scripting the replication before deleting it of course).
However the last time this happened I created a new subscription with the same name as the subscription that was causing the problem and SQL Server let me do it! If you then go on to delete the subscription that replication shows is in error and refresh replication, both the new subscription and the old one have gone and replication shows no errors!
This worked for me. Created new publication with same name and then deleted the publication. It removed the red cross from replication monitor. Thanks for the solution.