I can certainly tell you how I did it.
I'm using a slightly modified (working!) version of the Custom Thread Fields mod, which I'll attach below.
First off, some template changes are needed. In the New Posting Templates > newthread:
Find:
Code:
<!-- message area -->
<div class="smallfont">$vbphrase[message]:</div>
$messagearea
<!-- / message area -->
$posticons
Replace With:
Code:
<if condition="$custom_form">
<br />
<table cellpadding="1" cellspacing="$stylevar[cellspacing]" border="0" width="100%">
$custom_form
</table>
<br />
<span style='font-size: x-small; color: #FF0000'>*</span> Required Field<br /><br />
<else />
<!-- message area -->
<div class="smallfont">$vbphrase[message]:</div>
$messagearea
<!-- / message area -->
$posticons
</if>
In the Custom Thread Field options (in the vBulletin Options list), set the "Template Changes" option to "No".
What all this does is creates a conditional which checks if the forum being posted to (new topic only) has any custom fields. If it does, the template shows ONLY the custom fields and not the original message box.
The product below also fixes the <br /> tags being inserted between each question, as this only works in HTML-enabled forums.