<p>Suppose we have two stacks and no other temporary variable.</p>

<p>Is to possible to "construct" a queue data structure using only the two stacks?</p>

The time complexities would be worse, though.  A good queue implementation does everything in constant time.
Edit
Not sure why my answer has been downvoted here.  If we program, we care about time complexity, and using two standard stacks to make a queue is inefficient.  It's a very valid and relevant point.  If someone else feels the need to downvote this more, I would be interested to know why.
A little more detail
: on why using two stacks is worse than just a queue: if you use two stacks, and someone calls dequeue while the outbox is empty, you need linear time to get to the bottom of the inbox (as you can see in Dave's code).
You can implement a queue as a singly-linked list (each element points to the next-inserted element), keeping an extra pointer to the last-inserted element for pushes (or making it a cyclic list).  Implementing queue and dequeue on this data structure is very easy to do in constant time.  That's worst-case constant time, not amortized.  And, as the comments seem to ask for this clarification, worst-case constant time is strictly better than amortized constant time.