change weight of fileds programmaticaly in drupal 7
it seems there are different scope in your form . 
Like question and captcha are in different scope. Try to give weight for each scope too. 
Then it will work for you. Like 

 $elements['questions']['#weight']=50;