There are three problems
1. echo and php tags within an echo
Change your first echo from:
echo '<img src="http://img.youtube.com/vi/<?php echo get_post_meta($post->ID,'video_url',true);?>/0.jpg"/>';
to this:
echo '<img src="http://img.youtube.com/vi/' . get_post_meta($post->ID,'video_url',true) . '/0.jpg"/>';
2. if statement not wrapped and no brackets
change:
if get_post_meta($post->ID,'video_url',true)
to:
if (get_post_meta($post->ID,'video_url',true))
and add {}
around that code block:
if (get_post_meta($post->ID,'video_url',true)) {
echo '<img src="http://img.youtube.com/vi/' . get_post_meta($post->ID,'video_url',true) . '/0.jpg"/>';
// Check if the post has a Post Thumbnail assigned to it
}
3. else instead of elseif
the first else should be an elseif
. so change:
else ( has_post_thumbnail() ) {
to:
elseif ( has_post_thumbnail() ) {
Hope that is all of them. In the future try using a tool such as PHP Code Checker to check your code.