Custom field in a shortcode?

$post is global variable, so it’s not visible in this scope (and when you use $post in your code, you’re not referring to global $post variable but to local one)

You should put global $post somewhere in your code. For example like this:

...
while ($loop->have_posts()){
    global $post;
    $loop->the_post();
    $output .= '<li><a href="'.get_permalink().'"><img src="'.get_post_meta($post->ID,'wpcf-udstiller-logo',true).'"/></a></li>';
}
...