If you put:
IF OBJECT_ID('tempdb..
DROP TABLE
GO
At first, the problem will disappear, since the package will be parsed before the #test table is found.
What you are asking for is a system that recognizes that "1 = 0" will always be evaluated as false. If this were ever (which could potentially be the case for most real-world conditions), then you probably want to know that you are about to run something that might cause a crash.
If you drop the temporary table and then create a stored procedure that does the same:
CREATE PROC dbo.test
AS
BEGIN
IF OBJECT_ID('tempdb..#test') IS NULL
CREATE TABLE
IF 1 = 0
SELECT BadColumn
FROM
END
Then it will be happily created, and you can run it as many times as you want.
Rob