I'd like for search engines to recognize the content that is hosted on my website, but I'd also like to protect most of it behind a paywall. Are there any proven strategies for doing this?
With respect to the above answer, the OP did say he wants to protect "most" of his content. This gives us enough to build an SEO-friendly paywall.
If someone asked me to set up such a system, here is what I would do:
I would allow the first 250 or so words of any article to be publicly visible. I would then make this the "preview/summary" field in the CMS. This would make sure I can return a page with a good title tag, an h1 tag and some (hopefully) keyword-relevant text in the first 250 words. If I have contributors writing for the site I would make sure they know the value of writing good teaser text. Not only good for search engines per se, but relevant to the topic at hand and likely to get people interested in reading more.
This would also give my site lots of URL's to be crawled, just like any ordinary non-paywall site. I would make sure the URLs have relevant keywords - using custom permalinks rather than simply parsing the "title" field of the article - while remaining unique. I also think it would be good to let a certain number of comments show - this can add more content for crawlers and you can definitely show only the highest voted comments or use regex to match relevant keywords in comments. Again, the real point here is to get people interested in the site so they sign up!
If Google sees your content, he will index it into its index (because of your question is about SEO). If your content is indexed, it is visible to visitors.
For me, there is no solution to your problem, you need to choose between protected content and visible content.
If I were you, I will permit robots to index a webpage summary of protected content but that's all.