Surely there's a better way to write this statement?
As well as some standard indenting, a quick thought could be reversing the item being compared and using some temporary variables for readability.  

EDIT:
Ok, so svick pointed out that the original code was fundamentally flawed.  So how about creating an extension method on string to do the Contains for us.  Something like:

// Method would do well with some unit tests ....
public static bool ContainsAny(this string source, string[] findStr)
{
    return findStr.Any(p =&gt; source.Contains(p));
}


Then used like

var contentTypes = new [] { "Theme Gallery", "Converted Forms", "Page Output Cache", "Master Page" };
var urls = new[] { "_catalogs", "Style Library", "Cache Profiles" };
var accounts = new [] { "System Account" };

var contentType = item.ContentType.ToString();
var createdBy = item["Created By"].ToString();

if (!createdBy.ContainsAny(accounts) &amp;&amp;
    !item.Url.ContainsAny(urls) &amp;&amp;
    !contentType.ContainsAny(contentTypes))
{
    query.RecordItems(
            item.ID.ToString(), 
            item.ContentType.Name,
            item.DisplayName, 
            item.Name,
            "", 
            item.Url, 
            createdBy,
            "",
            Convert.ToDateTime(item["Modified"]),
            item["Modified By"].ToString(),
            Convert.ToDateTime(item["Created"]),
            createdBy);
}


Also, do you need to catch the exception in this method?  Could you not just handle that situation in an if statement as it looks like you are letting the exception handle the case where one of the values is null when a simple null check would suffice??