How to insert html inside form element div
Assuming you don't need the input wrapper. Just remove it:

$form['pass'] = array(
        '#type'             =&gt; 'password',
        '#title_display'    =&gt; 'none',
        '#maxlength'        =&gt; 128,
        '#size'             =&gt; 60,
        '#required'         =&gt; TRUE,
        '#theme_wrappers'   =&gt; array(), // remove the wrapper
        '#prefix'           =&gt; '',
        '#suffix'           =&gt; '&lt;i class="icon-lock icon-large"&gt;&lt;/i&gt;',
        '#attributes'       =&gt; array(
                                'placeholder'   =&gt; t('Password')
                            ),
        );


the icon will be placed after the input:

&lt;input type="password" maxlength="128" size="60" name="pass" id="edit-pass" placeholder="Password" class="inputbox form-text required"&gt;
&lt;i class="icon-lock icon-large"&gt;&lt;/i&gt;


But if you need that div wrapper, you can just rearrange his position:

$form['pass'] = array(
        '#type'             =&gt; 'password',
        '#title_display'    =&gt; 'none',
        '#maxlength'        =&gt; 128,
        '#size'             =&gt; 60,
        '#required'         =&gt; TRUE,
        '#theme_wrappers'   =&gt; array(), // remove the wrapper
        '#prefix'           =&gt; '&lt;div class="form-item form-type-password form-item-pass"&gt;',
        '#suffix'           =&gt; '&lt;i class="icon-lock icon-large"&gt;&lt;/i&gt;&lt;/div&gt;',
        '#attributes'       =&gt; array(
                                'placeholder'   =&gt; t('Password')
                            ),
        );


Now the output will be exactly as you wrote:

&lt;div class="form-item form-type-password form-item-pass"&gt;
    &lt;input type="password" maxlength="128" size="60" name="pass" id="edit-pass" placeholder="Password" class="form-text required"&gt;
    &lt;i class="icon-lock icon-large"&gt;&lt;/i&gt;
&lt;/div&gt;