Wordpress - How to Change 404 page title

I would use the wp_title filter hook:

function theme_slug_filter_wp_title( $title ) {
    if ( is_404() ) {
        $title = 'ADD 404 TITLE TEXT HERE';
    }
    // You can do other filtering here, or
    // just return $title
    return $title;
}
// Hook into wp_title filter hook
add_filter( 'wp_title', 'theme_slug_filter_wp_title' );

This will play nicely with other Plugins (e.g. SEO Plugins), and will be relatively forward-compatible (changes to document title are coming soon).

EDIT

If you need to override an SEO Plugin filter, you probably just need to add a lower priority to your add_filter() call; e.g. as follows:

add_filter( 'wp_title', 'theme_slug_filter_wp_title', 11 );

The default is 10. Lower numbers execute earlier (e.g. higher priority), and higher numbers execute later (e.g. lower priority). So, assuming your SEO Plugin uses the default priority (i.e. 10), simply use a number that is 11 or higher.


WordPress 4.4 and up

The accepted answer no longer works as wp_title is deprecated in WordPress 4.4 and up (see here). We must now use the document_title_parts filter hook instead.

Here is the accepted answer rewritten to use document_title_parts.

function theme_slug_filter_wp_title( $title_parts ) {
    if ( is_404() ) {
        $title_parts['title'] = 'ADD 404 TITLE TEXT HERE';
    }

    return $title_parts;
} 

// Hook into document_title_parts
add_filter( 'document_title_parts', 'theme_slug_filter_wp_title' );