отлично код работает:
<script>
photo = (function(){
return {
next: function(){
alert('next');
},
prev: function(){
alert('prev');
}
}
}())
</script>
<table id='photonavigation'>
<tr>
<td class='nav'><a href='#' onClick='javascript:photo.prev(); return false;'>←</a></td>
<td class='nav'><a href='#' onClick='javascript:photo.next(); return false;'>→</a></td>
</tr>
</table>
скорее всего вы объявляете photo где-то в чьей-то внутреней обласи видимости. без полного кода, не скажеш, наверняка.