Ok solved it by writing a plugin
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Is_checked {
var $return_data = "";
function __construct() {
$this->EE =& get_instance();
$entry_id = $this->EE->TMPL->fetch_param("entry_id");
$cat_id = $this->EE->TMPL->fetch_param("category_id");
$this->EE->db->where("entry_id", $entry_id);
$this->EE->db->where("cat_id", $cat_id);
$results = $this->EE->db->get("exp_category_posts");
if ($results->num_rows() == 0) {
$this->return_data = 0;
}
else {
$this->return_data = 1;
}
}
}
/* End of file pi.is_checked.php */
/* Location: ./system/expressionengine/third_party/is_checked/pi.is_checked.php */
Code in template now looks like this:
{exp:channel:categories channel="analyzers" style="nested" id="list-application-fields"}
{if {exp:is_checked category_id="{category_id}" entry_id="{entry_id}"} == 1}
<a href="http://{path=SITE_INDEX}class=supported">{category_name}</a>
{if:else}
<a href="http://{path=SITE_INDEX}class=unsupported">{category_name}</a>
{/if}
{/exp:channel:categories}