diff --git a/libempathy-gtk/empathy-log-window.c b/libempathy-gtk/empathy-log-window.c
index df60684..79e14d4 100644
--- a/libempathy-gtk/empathy-log-window.c
+++ b/libempathy-gtk/empathy-log-window.c
@@ -123,6 +123,12 @@ static void     log_window_entry_chats_activate_cb         (GtkWidget        *en
 static void     log_window_delete_menu_clicked_cb          (GtkMenuItem      *menuitem,
 							    EmpathyLogWindow *window);
 
+static void
+empathy_account_chooser_filter_has_logs (TpAccount *account,
+					 EmpathyAccountChooserFilterResultCallback callback,
+					 gpointer callback_data,
+					 gpointer user_data);
+
 enum {
 	COL_FIND_ACCOUNT_ICON,
 	COL_FIND_ACCOUNT_NAME,
@@ -299,6 +305,7 @@ empathy_log_window_show (TpAccount  *account,
 	/* Account chooser for chats */
 	window->account_chooser_chats = empathy_account_chooser_new ();
 	account_chooser = EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats);
+	empathy_account_chooser_set_filter (account_chooser, empathy_account_chooser_filter_has_logs, NULL);
 
 	gtk_box_pack_start (GTK_BOX (window->hbox_chats),
 			    window->account_chooser_chats,
@@ -1379,6 +1386,50 @@ log_window_entry_chats_activate_cb (GtkWidget       *entry,
 	}
 }
 
+typedef struct {
+	EmpathyAccountChooserFilterResultCallback callback;
+	gpointer                                  user_data;
+} FilterCallbackData;
+
+static void
+got_entities (GObject      *manager,
+	      GAsyncResult *result,
+	      gpointer      user_data)
+{
+	FilterCallbackData *data = user_data;
+	GList *entities;
+	GError *error;
+
+	if (!tpl_log_manager_get_entities_finish (TPL_LOG_MANAGER (manager), result, &entities, &error)) {
+		DEBUG ("Could not get entities: %s", error->message);
+		g_error_free (error);
+		data->callback (FALSE, data->user_data);
+	} else {
+		data->callback (entities != NULL, data->user_data);
+
+		g_list_free_full (entities, g_object_unref);
+	}
+
+	g_slice_free (FilterCallbackData, data);
+}
+
+static void
+empathy_account_chooser_filter_has_logs (TpAccount *account,
+					 EmpathyAccountChooserFilterResultCallback callback,
+					 gpointer callback_data,
+					 gpointer user_data)
+{
+	TplLogManager *manager = tpl_log_manager_dup_singleton ();
+	FilterCallbackData *cb_data = g_slice_new0 (FilterCallbackData);
+
+	cb_data->callback = callback;
+	cb_data->user_data = callback_data;
+
+	tpl_log_manager_get_entities_async (manager, account, got_entities, cb_data);
+
+	g_object_unref (manager);
+}
+
 static void
 log_window_logger_clear_account_cb (TpProxy *proxy,
 				    const GError *error,
@@ -1394,6 +1445,10 @@ log_window_logger_clear_account_cb (TpProxy *proxy,
 	 * has been deleted */
 	empathy_chat_view_clear (window->chatview_chats);
 	log_window_chats_populate (window);
+
+	/* Re-filter the account chooser so the accounts without logs get greyed out */
+	empathy_account_chooser_set_filter (EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats),
+					    empathy_account_chooser_filter_has_logs, NULL);
 }
 
 static void
@@ -1417,6 +1472,7 @@ log_window_delete_menu_clicked_cb (GtkMenuItem      *menuitem,
 
 	account_chooser = (EmpathyAccountChooser *) empathy_account_chooser_new ();
 	empathy_account_chooser_set_has_all_option (account_chooser, TRUE);
+	empathy_account_chooser_set_filter (account_chooser, empathy_account_chooser_filter_has_logs, NULL);
 
 	/* Select the same account as in the history window */
 	if (empathy_account_chooser_is_ready (account_chooser))
