Listing the most popular 8 city (custom fields) as used in posts

Let MySQL do the job:

global $wpdb;

$metakey = 'YOUR_METAKEY_GOES_HERE';

$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT meta_value, COUNT(*) AS counter from {$wpdb->postmeta} WHERE meta_key = %s GROUP BY meta_value ORDER BY counter DESC", $metakey, ARRAY_N )
    );
);

$resuls is an array with the ordered results.