Building Results From Advanced Search Form
You can set multiple conditions on a single ElementCriteriaModel parameter. Pass it either a comma-separated list as a string or an array of conditions.

{% set entries = craft.entries.id('84, 62, &lt; 7, 29') %}
{% set entries = craft.entries.id([84, 62, &lt; 7, 29]) %}


In this example, each entry with any of these IDs is returned (→ or logic).
To return only those entries that match all criteria of your list (→ and logic), set the first value to and:

{% set entries = craft.entries.id('and, &gt; 100, &lt; 200, not 110') %}


In your case I'd set the "year" and "price" parameters as an array and combine it with all other craft.entries parameters using the object syntax like so:

{% set entries = craft.entries({

    section: 'usedCars',
    type: 'entry',
    manufacturer: manufacturer,
    model: model,
    bodyStyle: bodyStyle,
    price: [
        'and',
        '&gt;= ' ~ minPrice,
        '&lt;= ' ~ maxPrice,
    ],
    year: [
        'and',
        '&gt;= ' ~ startYear,
        '&lt;= ' ~ endYear,
    ],

}) %}


Make sure that your "year" and "price" variables are not empty by setting default values:

{% set startYear = craft.request.getParam('startYear') %}
{% set startYear = startYear is not empty ? startYear : '1900' %}