problem with php function error

When $ticket_details['assigned_to']->display_name is not set, get_user_by() has returned not an object but FALSE.

First test if you got an object:

$user = get_user_by('id', get_post_meta( $post_id, '_responsible', true));

if ( ! is_object( $user ) )
    return;

$ticket_details['assigned_to'] = $user;

display_name is always set if there is an user object. At least to an empty string.