There is probably a plugin that already does this, but I created this Wordpress plugin to solve a problem we were having at our blog. We had a lot of posts that we were working on at once and some of them became published before others and had references to other posts that had not yet been published. I didn't want to have broken links or ugly reminders in publicly viewable posts. I also really didn't want to go back and add links at a latter date. This plugin allows you to use a shortcode to create links to existing posts that haven't been published. The shortcode simply returns the link text without any markup until the corresponding post is published and then it becomes an active link.
Simply wrap link text in the shortcode [flink]
and if use the post ID of the not-yet-published post.
[flink post_id=<POST ID>]<link text>[/flink]