How can I render a menu item as a span (or other elements) instead of a ?
You can use Special menu items module.


  User can create a new menu item and place either  or
   to the Path field, without quotes.


Also, you can look at another handy module called Menu attributes which allowed you to have control over menu link attributes.

Both modules use hook_menu_alter to adjust the changes to the menu item, you can take look at the module's code to understand how it works exacitly if you are interested.