<div class="tern_wp_members_wp_s2member_custom_fields"><?php echo get_user_field("user_hobby", $user_id); ?></div>
Adding PHP (like above) directly to the mark-up will not work.
Currently this plugin is set up to receive strings from the wp_usermeta table. The plugin, in attempt to be compatible with a wide range of plugins, checks the database table wp_usermeta for all names of user meta fields. This is why you see the titles of the fields you've set up with s2member.
The plugin only sees values that have been filled out because again it looks directly to the wp_usermeta table to find fields it could post.
Any fields containing information other than strings will not render as you'd like them to. This plugin was not designed to parse and deal with serialized arrays. Think about the search features of the plugin. In the event that you set up a field called "city" and you wanted the users of your site to be able to search through your users by city, a query needs to be created to allow this to happen. MySQL does not have the capability of parsing a serialized array while querying. Storing the "city" information in a serialized array would break the query.
It does not make sense to store data in the wp_usermeta table as an array or in any form other than a string or integer. This is how the table was meant to be used. Plugins that store the data in ways other than strings or integers are not playing nice. They make it significantly more difficult on other plugin developers.
The Members List plugin will not offers this capability. You'll need to find a plugin that allows you to add fields and stores them properly in the wp_usermeta table.