Is it possible for a non-logged in user to check the status of their membership?
In a slightly different way this is possible with checksum tokens.
You can create a profile or a contribution page with membership data.
Then you send a Mailing to all people who need a renewal (soon). That Mailing contains a link to the profile or contribution page with their contact ID and an individual checksum token as parameters.
When people click that link they see their data in the profile or contribution page and have the option to change it or to get a membership renewal.
For more info see http://wiki.civicrm.org/confluence/display/CRMDOC/Tokens
From this page:

There is a very powerful feature to allow you to send an email with CiviMail to your constituents with a link to the contribution form, profile, or event registration form with all of their contact information already filled in! This saves them the hassle of filling it out and increasing the chances they would ultimately donate.  Or it can be a simple way to periodically allow people to review their contact info and update it if applicable.
The way it works is you create a &quot;special&quot; link in the CiviMail message that includes the checksum token {contact.checksum}. When people click on the special link, it looks them up in the database and prefills any information on the contribution form or profile with any data that exists in their record. The special link lasts for seven days from the time it was sent out.
Checksum for Contribution Pages: To send people to a contribution page use this path where N is the ID of your contribution page:
Drupal: http://www.myorganization.org/civicrm/contribute/transact?reset=1&amp;id=N&amp;{contact.checksum}&amp;cid={contact.contact_id}

Joomla!: http://www.myorganization.org/index.php?option=com_civicrm&amp;task=civicrm/contribute/transact&amp;reset=1&amp;id=N&amp;{contact.checksum}&amp;cid={contact.contact_id}

WordPress: http://www.myorganization.org/?page=CiviCRM&amp;q=civicrm/contribute/transact&amp;reset=1&amp;id=N&amp;{contact.checksum}&amp;cid={contact.contact_id}

Checksum for standard Profiles (edit mode): To send people to a profile use this path where N is the ID of the Profile you want to send them to:
Drupal: http://www.myorganization.org/civicrm/profile/edit?reset=1&amp;gid=N&amp;{contact.checksum}&amp;id={contact.contact_id}

Joomla!: http://www.myorganization.org/index.php?option=com_civicrm&amp;task=civicrm/profile/edit&amp;reset=1&amp;gid=N&amp;{contact.checksum}&amp;id={contact.contact_id}

WordPress: http://www.myorganization.org/?page=CiviCRM&amp;q=civicrm/profile/edit&amp;reset=1&amp;gid=N&amp;{contact.checksum}&amp;id={contact.contact_id}