Put a wrapper div around your form and canvas elements.
Take the canvas out of your form element!
Then make the wrapper-div position:relative and both the form & canvas position:absolute
Result...Your select element is aligned where you want it!
Here is code and a Fiddle: http://jsfiddle.net/m1erickson/5UzhE/
<!doctype html>
<html>
<style>
#wrapper{position:relative;}
#d1{position:absolute top:0; left:0; z-index:1; }
#c1{width:310px; height:300px; border:1px solid #d3d3d3;}
#h1{position:absolute; top:140px; left:140px; z-index:2; }
</style>
<head>
<div id="wrapper" style='position:relative'>
<form id='h1';>
<select id='s1' style='position:absolute; z-index:2'>
<option value='Please select'>Please select</option>
</select>
</form>
<div id='d1'>
<canvas id="c1" width="310" height="300">
Your browser does not support the HTML5 canvas tag.
</canvas>
</div>
</div>
</head>
<body>
<script type="text/javascript">
var can=document.getElementById("c1");
var ctx = can.getContext("2d");
ctx.font = 'bold 18px Arial, Helvetica, sans-serif';;
ctx.textAlign='right';
ctx.fillStyle ='#CCC';
ctx.fillText("Align Me", 130, 160);
</script>
</body>
</html>