Use Matrix field to output specific html
In your code block.type is the matrix block type, ie homeSlider. 

There's alot going on in your code that I'm not sure is intended or not, but let's say you had the fields mainImage and imageText as required fields in there, and have an optional whiteLogo (not sure where that link's suppose to go, it's not in your original html). Try something like this:

{% includeJsFile "/js/jquery.jcarousel.min.js" %}
{% includeJsFile "/js/jcarousel.responsive.js" %}
&lt;div class="jcarousel-wrapper"&gt;
&lt;div class="jcarousel"&gt;
&lt;ul&gt;
  {% for block in entry.homepageSlider %}
  &lt;li&gt;
    {% set image = block.mainImage.first() %}
    &lt;img src="{{ image.getUrl }}" alt="{{ image.title }}"&gt;

    {% if block.whiteLogo %}
      &lt;div class="white-logo"&gt;&lt;/div&gt;
    {% endif %}

    &lt;div class="jcarousel-text"&gt;&lt;p&gt;{{ block.imageText }}&lt;/p&gt;&lt;/div&gt;
  &lt;/li&gt;
  {% endfor %}
&lt;/ul&gt;
&lt;/div&gt;


So, inside you're for loop, the fields you've created are accessible by block.fieldHandle. If you want to make a conditional based on if a field has a value or not, that is done in different ways depending on the type of field. So you'd do {% if block.lightswitchField %} if it's a lightswitch, {% if block.assetField | length %} if it's an assets field, or {% if block.textField != '' %} if it's a text field.

Hope that helps you in the right direction.