AJAX event returns same data always
Whatever data is returned must be encapsulated in a div element of the same id as the wrapper.

This fixed the problem for me :)

function raffle_create_form_type_steam($form, &amp;$form_state)
{
    if($form_state['values']['raf_prize_type'] == 'hardware')
    {
        return "&lt;div id='steam_options'&gt;&lt;/div&gt;";
    }
    else
    {
        return  $form['raf_steam_option_game_append'] = array(
                '#type' =&gt; 'checkbox',
                '#title' =&gt; 'Check if Steamer has game in library',
                '#description' =&gt; 'Does not allow gamer to join raffle if said gift already exists within gamer\'s steam library',
                "#prefix" =&gt; "&lt;div id='steam_options'&gt;",
                "#suffix" =&gt; "&lt;/div&gt;"
            );
    }

}