This might be heavier than you like but I believe it gives what you want. Create a view on the rows where the bit column is TRUE then materialize it with a unique index. The below example works on SQL Server 2008.
--Set statements required for creating materialized views.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Set statements required when creating index for materialized views.
SET ANSI_PADDING ON
GO
SET ANSI_WARNINGS ON
GO
SET ARITHABORT ON --only required in 80 compatibility mode.
GO
SET CONCAT_NULL_YIELDS_NULL ON
GO
SET NUMERIC_ROUNDABORT OFF
GO
CREATE TABLE dbo.Test (a int not null, b int not null, c bit not null);
GO
CREATE VIEW dbo.vTest (a,b) WITH SCHEMABINDING AS
SELECT a,b FROM dbo.Test WHERE c = 'TRUE' ;
GO
CREATE UNIQUE CLUSTERED INDEX [AK_vTest] ON dbo.vTest ( a,b );
GO
INSERT dbo.Test (a,b,c) VALUES (1,2,'TRUE'); --succeeds.
INSERT dbo.Test (a,b,c) VALUES (1,2,'FALSE'); --succeeds.
INSERT dbo.Test (a,b,c) VALUES (1,2,'FALSE'); --succeeds.
INSERT dbo.Test (a,b,c) VALUES (1,2,'TRUE'); --fails "Msg 2601, Level 14"
GO
SELECT * FROM dbo.Test
SELECT * FROM dbo.vTest
DROP VIEW dbo.vTest
DROP TABLE dbo.Test